由于 Webpack + React + TypeScript 的长 运行 脚本错误,IE11 没有响应
IE11 is not responding due to a long running script error with Webpack + React + TypeScript
我正在使用 webpack 4.*
捆绑我的 react 16.*
和 typescript 3.*
项目!
在我们心爱的 Internet Explorer 11 上,我得到:长时间未响应 运行 脚本错误 并且项目从不加载...在本地和测试服务器(生产模式)
我无法找出项目的哪一方面不受 IE11 支持,因为它没有给我那么多信息,而且我在互联网上也找不到任何类似的东西...这是它的样子:
我的相关设置是:
webpack.base.js
module.exports = {
entry: {
app: path.resolve(__dirname, "./src/index.tsx"),
},
output: {
path: path.resolve(__dirname, "./build/dist"),
publicPath: "public",
},
resolve: {
extensions: [".ts", ".tsx", ".js", ".json", ".sass"],
alias: {
// .... some internal aliases
},
},
module: {
rules: [
{
enforce: "pre",
test: /\.(ts|tsx)$/,
exclude: /node_modules/,
loader: "eslint-loader",
},
{
test: /\.(ts|tsx)?$/,
exclude: /node_modules/,
loader: "ts-loader",
},
{
test: /\.(gif|jpg|jpeg|svg|png|webp|eot|otf|ttf|woff|woff2|mp4|ogg|webm)$/i,
loader: "url-loader",
options: {
limit: 1,
name: "[name].[hash:8].[ext]",
},
},
],
},
optimization: {
runtimeChunk: "single",
splitChunks: {
chunks: "all",
cacheGroups: {
vendor: {
test: /[\/]node_modules[\/]/,
chunks: "initial",
name: "vendor",
enforce: true,
},
},
},
},
plugins: [
new webpack.DefinePlugin({
// ...
}),
new HtmlWebpackPlugin({
template: "src/index.ejs",
hash: true,
// ... some internal values to be injected to the template, like gtm and etc
}),
],
}
tsconfig.json
"compilerOptions": {
"module": "esnext",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"esModuleInterop": true,
"jsx": "react",
"moduleResolution": "node",
...
}
index.tsx
import "react-app-polyfill/ie11";
import "react-app-polyfill/stable";
import React from "react";
...
我认为它可能与我的代码更相关,而不是与第 3 方库相关...我没有使用 jQuery,并且完全相同的代码可以与 nwb 一起正常工作!我刚刚将捆绑器更改为 webpack 并将 npm 包更新为最新版本
如果需要更多信息,我可以通过 post 更新分享它
问题是巨大的内存泄漏,不知何故由 xregexp@4.3.0!
因为只在两个地方用过,所以我去掉了包,换成了内置的RegExp
,现在一切都好了!
我最初的错误是我太依赖 Network
选项卡了! Performance
DevTool 中的部分更加高效和有用
我对 XRegExp 也有同样的问题。似乎在 webpack 包中包含它会生成此内存 link。就我而言,我在我的 index.html 中包含了 XRegExp 并且它有效...
<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>
我正在使用 webpack 4.*
捆绑我的 react 16.*
和 typescript 3.*
项目!
在我们心爱的 Internet Explorer 11 上,我得到:长时间未响应 运行 脚本错误 并且项目从不加载...在本地和测试服务器(生产模式)
我无法找出项目的哪一方面不受 IE11 支持,因为它没有给我那么多信息,而且我在互联网上也找不到任何类似的东西...这是它的样子:
我的相关设置是:
webpack.base.js
module.exports = {
entry: {
app: path.resolve(__dirname, "./src/index.tsx"),
},
output: {
path: path.resolve(__dirname, "./build/dist"),
publicPath: "public",
},
resolve: {
extensions: [".ts", ".tsx", ".js", ".json", ".sass"],
alias: {
// .... some internal aliases
},
},
module: {
rules: [
{
enforce: "pre",
test: /\.(ts|tsx)$/,
exclude: /node_modules/,
loader: "eslint-loader",
},
{
test: /\.(ts|tsx)?$/,
exclude: /node_modules/,
loader: "ts-loader",
},
{
test: /\.(gif|jpg|jpeg|svg|png|webp|eot|otf|ttf|woff|woff2|mp4|ogg|webm)$/i,
loader: "url-loader",
options: {
limit: 1,
name: "[name].[hash:8].[ext]",
},
},
],
},
optimization: {
runtimeChunk: "single",
splitChunks: {
chunks: "all",
cacheGroups: {
vendor: {
test: /[\/]node_modules[\/]/,
chunks: "initial",
name: "vendor",
enforce: true,
},
},
},
},
plugins: [
new webpack.DefinePlugin({
// ...
}),
new HtmlWebpackPlugin({
template: "src/index.ejs",
hash: true,
// ... some internal values to be injected to the template, like gtm and etc
}),
],
}
tsconfig.json
"compilerOptions": {
"module": "esnext",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"esModuleInterop": true,
"jsx": "react",
"moduleResolution": "node",
...
}
index.tsx
import "react-app-polyfill/ie11";
import "react-app-polyfill/stable";
import React from "react";
...
我认为它可能与我的代码更相关,而不是与第 3 方库相关...我没有使用 jQuery,并且完全相同的代码可以与 nwb 一起正常工作!我刚刚将捆绑器更改为 webpack 并将 npm 包更新为最新版本
如果需要更多信息,我可以通过 post 更新分享它
问题是巨大的内存泄漏,不知何故由 xregexp@4.3.0!
因为只在两个地方用过,所以我去掉了包,换成了内置的RegExp
,现在一切都好了!
我最初的错误是我太依赖 Network
选项卡了! Performance
DevTool 中的部分更加高效和有用
我对 XRegExp 也有同样的问题。似乎在 webpack 包中包含它会生成此内存 link。就我而言,我在我的 index.html 中包含了 XRegExp 并且它有效...
<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>