代码之家  ›  专栏  ›  技术社区  ›  Ritmo2k

在传输输出中调用生成器时出错

  •  0
  • Ritmo2k  · 技术社区  · 6 年前

    我有一个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 )按照我最初的预期调用。有人知道我错过了什么吗?

    0 回复  |  直到 6 年前