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

How to Babel Transpile Object.entries/values in Aurelia CLI app?

使用 IE11 时,在我的代码使用 Object.entries 或 Object.values:

的任何地方都会出现如下错误

Unhandled rejection TypeError: Object doesn't support property or method 'entries'...

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

进一步调查,我相信与 Aurelia 一起打包的 Babel/settings 不支持 Object.entries/values(或其他提议的 ES2017 选项)所以我安装了 babel-preset-es2017babel-plugin-transform-runtime 每个另一个线程 -

但是,我无法弄清楚如何更新项目以包含这些用于转译。在 aurelia.json.babelrc 文件中添加 transform-runtime 会破坏 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 都会导致以下错误:

Error: ENOENT: no such file or directory, open 'C:\Users...\src\babel-runtime\helpers\classCallCheck.js'

不确定为什么会出现此错误,或者修复它是否有帮助,但我的猜测可能是因为 aurelia.json

中的 "source": src/**/*.js

如有任何帮助,我们将不胜感激。谢谢!

我的解决方案是通过 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 不包含 plugin/support 对象。entries/values。此外,babel-tranform-runtime 的目的似乎与我需要的不同,不属于我的解决方案。