我有一个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;
}
最后,我用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)
我想我的babel配置是不完整的,但看看错误,正确的babel插件(
regenerator-runtime
)按照我最初的预期调用。有人知道我错过了什么吗?