发现用 webpack 5 打包的程序,文件中居然存在这样的 ES6 语法:
var[t,n,a]=e[d],s=!0,i=0;i<t.length;i++
对比看源码是 var [chunkIds, fn, priority] = deferred[i]
/* webpack/runtime/chunk loaded */
(() => {
var deferred = [];
__webpack_require__.O = (result, chunkIds, fn, priority) => {
if (chunkIds) {
priority = priority || 0;
for (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
deferred[i] = [chunkIds, fn, priority];
return;
}
var notFulfilled = Infinity;
for (var i = 0; i < deferred.length; i++) {
var [chunkIds, fn, priority] = deferred[i];
var fulfilled = true;
for (var j = 0; j < chunkIds.length; j++) {
if ((priority & (1 === 0) || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => __webpack_require__.O[key](chunkIds[j]))) {
chunkIds.splice(j--, 1);
} else {
fulfilled = false;
if (priority < notFulfilled) notFulfilled = priority;
}
}
if (fulfilled) {
deferred.splice(i--, 1);
var r = fn();
if (r !== undefined) result = r;
}
}
return result;
};
})();
不知道怎么搞了。
解决方案,webpack.config.js 设置 target: ['es5', 'web'],
// otherwise webpack generate es6 runtime output
// https://github.com/webpack/webpack/issues/16159
// https://webpack.js.org/configuration/output/#outputenvironment