0

次のように定義された JavaScript モジュールがあります。

const getQueryParameters = function* (obj, prefix) {
  for (const [k1, v1] of Object.entries(obj)) {
    const name = prefix === undefined || prefix === null ? k1 : `${prefix}.${k1}`;

    if (typeof v1 === 'object') {
      for (const [k2, v2] of getQueryParameters(v1, name)) {
        yield [k2, v2];
      }
    }
    else {
      yield [name, v1];
    }
  }
};

module.exports = getQueryParameters;

vue SFC では、次のようにインポートしています。

import 'babel-polyfill';
const getQueryParameters = require('../../modules/get-query-parameters.js');

私は次のようにそれを呼び出そうとしています:

const myObject = {
  'foo': 42,
  'bar': {
    'baz': 'bof'
  }
};
const params = {};
for (const [k, v] of getQueryParameters(myObject, null)) {
    params[k] = v;
}

最後に、次のように a を使用して webpack と babel でトランスパイル.babelrcします。

{
  "presets": [
    [
      "env",
      {
        "targets": {
          "browsers": [
            "last 2 versions",
            "IE >= 11"
          ]
        }
      }
    ]
  ]
}

手順はノードから (トランスパイルなしで) 期待どおりに正常に実行されますが、ブラウザーで実行しようとすると、次のエラーが発生します。

vue.esm.js?a026:1741 TypeError: Cannot convert undefined or null to object
    at Function.entries (<anonymous>)
    at getQueryParameters$ (get-query-parameters.js?5f2b:64)
    at tryCatch (runtime.js?f3a2:65)
    at Generator.invoke [as _invoke] (runtime.js?f3a2:303)
    at Generator.prototype.(anonymous function) [as next] (webpack-internal:///./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js:117:21)
    at getQueryParameters$ (get-query-parameters.js?5f2b:63)
    at tryCatch (runtime.js?f3a2:65)
    at Generator.invoke [as _invoke] (runtime.js?f3a2:303)
    at Generator.prototype.(anonymous function) [as next] (webpack-internal:///./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js:117:21)
    at getQueryParameters$ (get-query-parameters.js?5f2b:63)

私のバベル構成は不完全だと思いますが、エラーを見ると、regenerator-runtime当初の期待どおりに正しいバベル プラグイン ( ) が呼び出されています。誰かが私が欠けているものを知っていますか?

4

0 に答える 0