如何在Aurelia CLI应用程序中Babel Transpile Object.entries / values?

时间:2017-03-15 23:26:59

标签: babeljs aurelia aurelia-cli transpiler ecmascript-2017

使用IE11时,无论我的代码使用Object.entries还是Object.values,我都会收到如下错误:

  

未处理拒绝TypeError:对象不支持属性或方法'entries'...

我的问题我的问题源于代码没有被转换为ES5,但是在使用Aurelia CLI时不确定如何检查或更改我的项目设置以进行转换/ Babel。

进一步研究,我认为Aurelia打包的Babel /设置不支持Object.entries / values(或其他提议的ES2017选项)所以我在另一个线程中安装了babel-preset-es2017babel-plugin-transform-runtime - Babel support for Object.entries

但是,我无法弄清楚如何更新项目以包含这些用于转换。添加transform-runtimeaurelia.json文件中的.babelrc可以打破au run,只需将es2017添加到.babelrc文件似乎不会任何东西。我也在查看jsconfig.jsontranspile.js文件,但无法找到解决方案。

aurelia.json档案:

...
"transpiler": {
    "id": "babel",
    "displayName": "Babel",
    "fileExtension": ".js",
    "options": {
        "plugins": [
            "transform-es2015-modules-amd",
            "transform-runtime" <---tried
        ]
    },
    "source": "src/**/*.js"
},
...

.babelrc档案:

{
    "sourceMap": true,
    "moduleIds": false,
    "comments": false,
    "compact": false,
    "code": true,
    "presets": ["es2015-loose", "stage-1", "es2017"], <---tried
    "plugins": [
        "syntax-flow",
        "transform-decorators-legacy",
        "transform-flow-strip-types",
        "transform-runtime" <---tried
    ]
}

在其中添加transform-runtime会导致以下错误:

  

错误:ENOENT:没有这样的文件或目录,打开'C:\ Users ... \ src \ babel-runtime \ helpers \ classCallCheck.js'

不确定我为什么会收到此错误,或者修复它会有所帮助,但我的猜测可能是因为"source": src/**/*.js中的aurelia.json

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我的解决方案是通过执行npm install babel-plugin-transform-es2017-object-entries --save-dev来安装以下插件,它会转换object.entries和object.values。

.babelrc文件看起来像这样:

{
    "sourceMap": true,
    "moduleIds": false,
    "comments": false,
    "compact": false,
    "code": true,
    "presets": ["es2015-loose", "stage-1"],
    "plugins": [
        "syntax-flow",
        "transform-decorators-legacy",
        "transform-flow-strip-types",
        "transform-es2017-object-entries"
    ]
}

此外,根据Babeljs.io(https://babeljs.io/docs/plugins/preset-es2017/),似乎babel-preset-es2017不包含对object.entries / values的插件/支持。此外,babel-tranform-runtime的目的似乎与我所需要的不同,而不是我解决方案的一部分。