【发布时间】:2020-06-09 05:24:04
【问题描述】:
我有一个使用 @mdx-js/runtime 的项目,它在 IE 11 或 Edge (Edge 44.18362.449.0) 上完全崩溃:
SCRIPT1028: SCRIPT1028: Expected identifier, string or number
由于这里的扩展语法,它实际上会中断:
const allNodes = sortedNodes.map(({ start: _, ...node }, i) => {
这行代码来自remark-mdx,是@mdx-js/runtime的依赖,特别是这个文件和行:https://github.com/mdx-js/mdx/blob/master/packages/remark-mdx/extract-imports-and-exports.js#L66
我一直在尝试让 Webpack 和 Babel 转换该文件,以便不再存在传播:
浏览器列表:
如果我运行 npx browserslist 我可以看到 IE 11 在那里。
"browserslist": [
"> 0.5%",
"last 2 version",
"Firefox ESR",
"not dead",
"iOS >= 9"
]
.babelrc:
我尝试禁用loose 模式并添加@babel/plugin-transform-spread 和@babel/plugin-proposal-object-rest-spread,但没有解决问题。
{
"presets": [[
"@babel/preset-env", {
"useBuiltIns": "usage",
"loose": false, // Was true before
"modules": "auto",
"corejs": 3
}],
"@babel/preset-react",
"@babel/preset-typescript"
],
"plugins": [
["@babel/plugin-proposal-decorators", {
"legacy": true
}],
["@babel/plugin-proposal-class-properties", {
"loose": true
}],
"@babel/plugin-transform-spread", // Just added
"@babel/plugin-proposal-object-rest-spread", // Just added
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-proposal-nullish-coalescing-operator",
"react-hot-loader/babel"
]
}
webpack.config.js:
在这里,我尝试明确包含remark-mdx 和@mdx-js/runtime,并删除exclude 属性或将其更改为/node_modules\/(?!(remark-mdx|@mdx-js\/runtime)\/).*/,但似乎没有任何效果:
{
test: /\.(j|t)sx?$/,
include: [
path.resolve(__dirname, 'src'),
// Tried explicitly adding these 2:
path.resolve('node_modules/remark-mdx'),
path.resolve('node_modules/@mdx-js/runtime'),
],
// Tried removing `exclude` or not excluding those 2 packages:
// exclude: /node_modules/,
// exclude: /node_modules\/(?!(remark-mdx|@mdx-js\/runtime)\/).*/,
use: [{
loader: 'babel-loader',
options: {
cacheDirectory: true,
babelrc: true,
}
}],
}
我正在使用 Babel 7 和 Webpack 4。
【问题讨论】:
标签: webpack ecmascript-6 babeljs babel-loader es6-modules