关于reactjs:对象不支持属性或方法’entries \\’-IE11中的错误

Object doesn't support property or method 'entries' - error in IE11

我正在开发使用create-react-app启动的React应用,它在Chrome中完美运行,但无法在IE11中运行。

启动应用程序后,我从控制台收到以下错误:

Object doesn't support property or method 'entries'

我花了数小时拖拉Google试图寻找解决方案,但没有一个推荐的解决方案。

我尝试过的事情:

  • index.js的顶部导入react-app-polyfill/ie11react-app-polyfill/stable
  • index.js的顶部导入core-js/es/object/entriescore-js/features/object/entries
  • index.js中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
if (!Object.entries) {
  Object.entries = function( obj ){
    var ownProps = Object.keys( obj ),
        i = ownProps.length,
        resArray = new Array(i); // preallocate the Array
    while (i--)
      resArray[i] = [ownProps[i], obj[ownProps[i]]];

    return resArray;
  };
}

package.json:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{
 "name":"ceas-ui",
 "version":"0.1.0",
 "private": true,
 "dependencies": {
   "auth0-js":"^9.8.2",
   "bootstrap":"^4.1.3",
   "core-js":"^3.6.4",
   "env-cmd":"^8.0.2",
   "joi-browser":"^13.4.0",
   "react":"^16.12.0",
   "react-app-polyfill":"^1.0.6",
   "react-bootstrap":"^1.0.0-beta.16",
   "react-dom":"^16.12.0",
   "react-loader-spinner":"^2.3.0",
   "react-modal":"^3.8.1",
   "react-router-bootstrap":"^0.25.0",
   "react-router-dom":"^5.1.2",
   "react-scripts":"^3.3.1",
   "react-slidedown":"^2.4.5",
   "react-toastify":"^4.5.2",
   "styled-components":"^5.0.0"
  },
 "scripts": {
   "start":"react-scripts start",
   "test":"cls && react-scripts test --coverage --env=jsdom",
   "eject":"react-scripts eject"
  },
 "eslintConfig": {
   "extends":"react-app"
  },
 "browser": {
   "joi":"joi-browser"
  },
 "devDependencies": {
   "babel-cli":"^6.26.0",
   "babel-core":"^6.26.3",
   "babel-plugin-transform-class-properties":"^6.24.1",
   "babel-preset-es2015":"^6.24.1",
   "babel-preset-react":"^6.24.1",
   "babel-preset-stage-0":"^6.24.1",
   "chai":"^4.2.0",
   "enzyme":"^3.9.0",
   "enzyme-adapter-react-16":"^1.9.0",
   "jsdom":"^13.2.0",
   "mocha":"^6.0.0",
   "react-test-renderer":"^16.8.2",
   "rimraf":"^2.6.3"
  },
 "browserslist": {
   "production": [
     ">0.2%",
     "not dead",
     "not op_mini all",
     "ie 11"
    ],
   "development": [
     ">0.2%",
     "not dead",
     "not op_mini all",
     "last 1 chrome version",
     "last 1 firefox version",
     "last 1 safari version",
     "ie 11"
    ]
  }
}

参考文献:

  • https://github.com/facebook/create-react-app/issues/8405
  • 在使用create-react-app的React应用程序中充填ES6功能的最佳方法


您可以降级您的react-scripts版本。
在您的package.json中,将其更改为" react-scripts ":" 3.2.0 "。

看看https://github.com/facebook/create-react-app/issues/8405。


react-scripts版本3.3.0和更高版本似乎是一个问题。您可以在GitHub中找到许多问题报告,例如:github.com/facebook/create-react-app/issues/8197,github.com/facebook/create-react-app/issues/8195。

它仍然可以与[email protected]一起使用。您可以尝试恢复到3.2.0作为解决方法。还请记住删除node_modules中的.cache文件夹并删除IE浏览器缓存,然后重试。