如何在 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-es2017
和 babel-plugin-transform-runtime
每个另一个线程 -
但是,我无法弄清楚如何更新项目以包含这些用于转译。在 aurelia.json
或 .babelrc
文件中添加 transform-runtime
会破坏 au run
并且仅将 es2017
添加到 .babelrc
文件似乎没有效果任何事物。我也在查看 jsconfig.json
和 transpile.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
的目的似乎与我需要的不同,不属于我的解决方案。
使用 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-es2017
和 babel-plugin-transform-runtime
每个另一个线程 -
但是,我无法弄清楚如何更新项目以包含这些用于转译。在 aurelia.json
或 .babelrc
文件中添加 transform-runtime
会破坏 au run
并且仅将 es2017
添加到 .babelrc
文件似乎没有效果任何事物。我也在查看 jsconfig.json
和 transpile.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
的目的似乎与我需要的不同,不属于我的解决方案。