我是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
谢谢!
我不想混合使用include
和exclude
结构,通过regexp有一个工作选项:
rules: [{
test: /.(js|jsx)$/,
exclude: /node_modules(/|\)(?!(crypto|ws))/,
use: {
loader: 'babel-loader'
}
}]
注意:这里的ws
只是的例子
此外,对于某些包/功能,此代码可能会有所帮助(在IE11的情况下(:
if (!window.crypto) {
window.crypto = window.msCrypto;
}