使用IE11时,无论我的代码使用Object.entries还是Object.values,我都会收到如下错误:
未处理拒绝TypeError:对象不支持属性或方法'entries'...
我的问题我的问题源于代码没有被转换为ES5,但是在使用Aurelia CLI时不确定如何检查或更改我的项目设置以进行转换/ Babel。
进一步研究,我认为Aurelia打包的Babel /设置不支持Object.entries / values(或其他提议的ES2017选项)所以我在另一个线程中安装了babel-preset-es2017
和babel-plugin-transform-runtime
- Babel support for Object.entries
但是,我无法弄清楚如何更新项目以包含这些用于转换。添加transform-runtime
或aurelia.json
文件中的.babelrc
可以打破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
会导致以下错误:
错误:ENOENT:没有这样的文件或目录,打开'C:\ Users ... \ src \ babel-runtime \ helpers \ classCallCheck.js'
不确定我为什么会收到此错误,或者修复它会有所帮助,但我的猜测可能是因为"source": src/**/*.js
中的aurelia.json
非常感谢任何帮助。谢谢!
答案 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
的目的似乎与我所需要的不同,而不是我解决方案的一部分。