webpack bundle 在 IE11 上抛出错误,因为只有一个节点包'crypto-js'



我是webpack和babel的新手。我正在开发一个具有自定义webpack和babel设置的react应用程序。

我在这个应用程序中添加了react应用程序polyfill,它在IE11上运行得很好。但在安装了crypto-js之后,当我在IE11上本地运行webpack服务器时,webpack捆绑包抛出了一个错误expected ')'

我在谷歌上搜索了这个错误,发现默认参数是es6特性(我认为crypto-js可能是用es6的一些特性编写的(。因此,我删除了webpack-local-config.js文件中的excludenode_modules,以传输节点包。

来自

module: {
rules: [{
test: /.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}]
}

module: {
rules: [{
test: /.(js|jsx)$/,
include: [
path.resolve(__dirname, 'node_modules/crypto-js')
],
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}]
}

不起作用,所以尝试了这个

module: {
rules: [{
test: /.(js|jsx)$/,
use: {
loader: 'babel-loader'
}
}]
}

但这些尝试并没有解决问题。

老实说,我觉得我完全陷入了困境,不确定如何解决这个问题。

如果只有一个软件包不支持IE 11浏览器,该怎么办?

版本

webpack: ^4.44.1
webpack-cli: ^3.3.12
webpack-dev-server: ^3.7.1

谢谢!

我不想混合使用includeexclude结构,通过regexp有一个工作选项:

rules: [{
test: /.(js|jsx)$/,
exclude: /node_modules(/|\)(?!(crypto|ws))/,
use: {
loader: 'babel-loader'
}
}]

注意:这里的ws只是的例子

此外,对于某些包/功能,此代码可能会有所帮助(在IE11的情况下(:

if (!window.crypto) {
window.crypto = window.msCrypto;
}

相关内容

最新更新