【发布时间】:2018-11-16 03:52:42
【问题描述】:
我已经让 Webpack 与 Babel 一起工作,并包含 @babel/polyfill,但 IE11 在尝试在 NodeList 上使用 .forEach 时仍然抛出 SCRIPT438 错误。
这是我的package.json
{
...
"scripts": {
"build:js": "webpack --config ./_build/webpack.config.js"
},
...
"browserslist": [
"IE 11",
"last 3 versions",
"not IE < 11"
],
"babel": {
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage"
}
]
]
},
"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6",
"babel-loader": "^8.0.4",
"webpack": "^4.25.1",
"webpack-cli": "^3.1.2"
},
"dependencies": {
"@babel/polyfill": "^7.0.0"
}
}
我的webpack.config.js:
const path = require('path');
const webpack = require('webpack');
module.exports = (env, argv) => {
const javascript = {
test: /\.js$/,
use: {
loader: 'babel-loader'
}
};
// config object
const config = {
entry: {
main: './_src/js/main.js',
},
devtool: 'source-map',
output: {
path: path.resolve(__dirname, '../js'),
filename: '[name].js',
},
module: {
rules: [javascript]
}
}
return config;
}
最后是 /_src/main.js 我正在通过 webpack 和 babel 运行:
const testList = document.querySelectorAll('.test-list li');
testList.forEach(item => {
console.log(item.innerHTML);
})
https://babeljs.io/docs/en/babel-polyfill 的文档说,当通过带有 useBuiltIns: "usage" 的 Webpack 加载它时,您不需要 import 或 require polyfill。但即使我删除该选项并在main.js 顶部手动导入整个polyfill(使我的包变得很大),它仍然会在IE11 中出错。
那么……我做错了什么?
【问题讨论】:
-
Babel 没有 polyfill。
标签: javascript webpack babeljs npm-scripts babel-polyfill