Babel Preset 不支持 IE11 的 Object.assign -“Object 不支持属性或方法‘assign’”

IT技术 reactjs internet-explorer webpack babeljs babel-preset-env
2021-05-14 10:27:39

我正在为我的 react 应用程序使用babel-preset-env 版本 - 1.6.1,我在 IE 上遇到错误:-对象不支持属性或方法“分配” 在此处输入图片说明

这是我的.babelrc :-

{
"presets": [
    "react",
    [
        "env",
        {
            "targets": {
                "browsers": [
                    "last 1 versions",
                    "ie >= 11"
                ]
            },
            "debug": true,
            "modules": "commonjs"
        }
    ]
],
"env": {
    "test": {
        "presets": [
            [
                "babel-preset-env",
                "react"
            ]
        ],
        "plugins": [
            "transform-object-rest-spread",
            "transform-class-properties",
            "transform-runtime",
            "babel-plugin-dynamic-import-node",
            "array-includes",
            "url-search-params-polyfill",
            "transform-object-assign"
        ]
    }
},
"plugins": [
    "transform-object-rest-spread",
    "transform-class-properties",
    "syntax-dynamic-import",
    "transform-runtime",
    "array-includes",
    "url-search-params-polyfill",
    "transform-object-assign"
]

}

我试过这些 polyfills:-

https://babeljs.io/docs/plugins/transform-object-assign/ https://www.npmjs.com/package/babel-plugin-object-assign

但它没有用

我正在使用语法:-

let a = Object.assign({},obj);

在我的项目中随处可见

我需要一个适用于我的项目的 polyfill。

2个回答

你需要Babel Polyfill

要么将其导入到您的入口 JS 文件中,要么使用 Webpack。

import "babel-polyfill";

或在 webpack.config.js

module.exports = {
  entry: ["babel-polyfill", "./app/main"]
}

注意:babel-polyfill应该在最上面导入它不会工作

Babel Polyfill 自 Babel 7.4.0 起已过时

来源

请改用 core-js。

import "core-js/stable";
import "regenerator-runtime/runtime";

或者使用 Webpack:

module.exports = {
  entry: ["core-js/stable", "regenerator-runtime/runtime", "./app/main"]
}

在我的情况下,上面的 webpack 配置不起作用!因为我也缺乏Promise polyfill。这是我最终使用的 webpack.config:

entry: { 'main': ['core-js/fn/promise', 'core-js/stable/object/assign', './wwwroot/src/app.js'] },