为什么IE 11显示空白页面渲染react应用程序

IT技术 javascript reactjs internet-explorer rendering polyfills
2021-04-04 04:19:15

我的 IE 11 和我的 React 应用程序有问题。我使用 Webpack、babel 和 polyfill.io cdn,一切都很好,直到渲染捆绑文件,然后它停止做任何事情。你知道可能会出什么问题吗?

提前致谢。

6个回答

React 不立即与 IE 兼容,

来自官方文档:

React 支持所有流行的浏览器,包括 Internet Explorer 9 及更高版本,尽管旧版浏览器(例如 IE 9 和 IE 10)需要一些 polyfill。

我们不支持不支持 ES5 方法的旧浏览器,但是如果页面中包含诸如 es5-shim 和 es5-sham 之类的 polyfill,您可能会发现您的应用程序确实可以在旧浏览器中运行。如果你选择走这条路,你就靠自己了。


要使您的应用程序在 IE(11 或 9)上运行,您必须安装 React-app-polyfill :

https://www.npmjs.com/package/react-app-polyfill

特征 :

每个 polyfill 确保存在以下语言功能:

Promise (for async / await support)
window.fetch (a Promise-based way to make web requests in the browser)
Object.assign (a helper required for Object Spread, i.e. { ...a, ...b })
Symbol (a built-in object used by for...of syntax and friends)
Array.from (a built-in static method used by array spread, i.e. [...arr])

用法

首先,使用 Yarn 或 npm 安装包:

npm install react-app-polyfill

现在,您可以导入您打算支持的最小版本的入口点。例如,如果您导入 IE9 入口点,这将包括 IE10 和 IE11 支持。

浏览器 9

// This must be the first line in src/index.js
import 'react-app-polyfill/ie9';

// ...

浏览器 11

// This must be the first line in src/index.js
import 'react-app-polyfill/ie11';

// ...

您还可以使用以下文档配置您的清单以处理不同的浏览器:https : //github.com/browserslist/browserslist

例子 :

"browserslist": [
    ">0.2%",
    "not dead",
    "ie >= 9"
]

来自官方网站的更多信息

Array.find() 似乎与 IE 完全不兼容:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... 我不知道 babel 是否可以做些什么
2021-05-25 04:19:15
2021-05-29 04:19:15
现在我收到 SCRIPT5007: Unable to set property 'find' of undefined or null reference,知道为什么吗?
2021-06-01 04:19:15
得到同样的错误,但这个解决方案对我不起作用。
2021-06-11 04:19:15
@Treycos 有什么建议吗?这个解决方案对我不起作用
2021-06-16 04:19:15

对于偶然发现这个问题的任何其他人,

如果 react-app-polyfill 对您不起作用,请尝试使用 core-js。

$ npm install core-js

确保这是 src/index.js 文件中的第一行:

import 'core-js/stable'

此外,您在开发过程中可能看不到修复程序。

对我来说,这个问题只在生产版本(react build)中得到解决

包 react-app-polyfill 将有助于在 ie9 和 ie11 中运行 react app。这将适用于开发和生产环境。

请按照步骤 1. 编辑 index.js 文件并在文件的最顶部添加以下几行。

    import 'react-app-polyfill/ie9';
    import 'react-app-polyfill/ie11';
    import 'react-app-polyfill/stable';
  1. 编辑 Package.json 文件并在浏览器列表的开发部分添加“ie 11”。默认的生产列表非常慷慨,并且通过> 0.2%已经包括即11

    "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version",
      "ie 11"
    ]
    

    }

  2. 删除整个 node_modules 文件夹

  3. 运行 npm install 重新安装 node_modules

  4. 运行 npm start 再次运行

react-app-polyfills仅适用于生产,不适用于开发。构建、部署然后测试它。

对我来说,它只适用于本地(npm start)但在部署(npm run build)中它不起作用:(
2021-06-02 04:19:15

尝试以下方法一定能解决问题:-

步骤 1:- 首先安装软件包: -

npm install react-app-polyfill

or

yarn add react-app-polyfill

第 2 步: - index.js 文件的顶部添加以下命令 -

import 'react-app-polyfill/ie11';

import 'react-app-polyfill/stable';

第 3 步:- 在 package.json 文件中将 browserlist 部分替换为以下内容:-

  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all",
      "ie >= 9"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version",
      "ie 11"
    ]
  }

第 4 步:- 删除节点module、package.lock.json、yarn.lock,然后运行以下命令:-

 yarn

 yarn start

or
npm install

npm start
就我而言,我还必须将 tsconfig.json 中的目标降低到 es5,以解决 ie11 不支持的箭头函数问题。否则这个解决方案对我有用。(或者你可以重写,但是我喜欢我的源代码中的箭头函数,因为它使它更易读恕我直言。
2021-05-24 04:19:15