次のように定義された 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
当初の期待どおりに正しいバベル プラグイン ( ) が呼び出されています。誰かが私が欠けているものを知っていますか?