很难追踪到这一点,所以感谢与我的关系。一些用户抱怨我们的网站在IE11中被破坏了。该应用程序使用的是nextjs 3.0.1和webpack 2.7.0。
我认为我遇到类似Angular RxJs timer pausing on IE11的问题。在IE11中,我从一个名为webpack /// webpack bootstrapxxxxxxxxxx(其中x是十六进制的数字)的引用中收到错误。
以下是导致问题的功能:
// The require function
function __webpack_require__(moduleId) {
// Check if module is in cache
if(installedModules[moduleId]) {
return installedModules[moduleId].exports;
}
// Create a new module (and put it into the cache)
var module = installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {},
hot: hotCreateModule(moduleId),
parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
children: []
};
// Execute the module function
var threw = true;
try {
modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
threw = false;
} finally {
if(threw) delete installedModules[moduleId];
}
// Flag the module as loaded
module.l = true;
// Return the exports of the module
return module.exports;
}
第modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
行会引发错误Unable to get property 'call' of undefined or null reference
。
我想这是因为缺少polyfill,所以我按照https://github.com/zeit/next.js/issues/1254的建议并将其添加到next.config.js(下一个webpack配置):
const originalEntry = config.entry
config.entry = function () {
return originalEntry()
.then((entry) => {
Object.keys(entry).forEach(k => {
entry[k].unshift('babel-polyfill')
})
console.log(entry)
return entry
})
}
我仍然看到同样的错误。
有趣的是,我在nextjs应用程序的生产版本中遇到了另一个问题。它位于由next生成的app.js
文件的深处,但错误似乎来自此行https://github.com/ianstormtaylor/heroku-logger/blob/master/src/index.js#L12:
const {
LOG_LEVEL,
NODE_ENV,
} = process.env
投掷Expected identifier
。这是因为模块没有正确地从ES6转换为ES5吗?可能存在一个潜在的问题(我在开发中看到),而不是heroku-logger
库的问题。
意识到这是一个复杂的问题,我可能错过了一些细节。在此先感谢您的帮助!
答案 0 :(得分:0)
如果其他人与此搏斗,我将babel-polyfill
留在了webpack配置中并将build
命令更改为:
next build && babel .next/*.js --out-dir . --presets=es2015,react
这非常笨重,因为有些代码是由webpack进行的,然后再次出现在输出目录中。会喜欢其他的建议!