1

使用 IE11 时,在我的代码使用 Object.entries 或 Object.values 的任何地方都会出现如下错误:

未处理的拒绝类型错误:对象不支持属性或方法“条目”...

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

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

但是,我无法弄清楚如何更新项目以包含这些以进行编译。transform-runtimeaurelia.jsonor文件中添加.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

任何帮助将不胜感激。谢谢!

4

1 回答 1

0

我的解决方案是通过 do 安装以下插件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似乎与我需要的不同,并且不是我的解决方案的一部分。

于 2017-03-16T05:14:06.787 回答