我正在开发一个使用 ES 6 结合 Babel 转译器和 System.js 作为模块加载器的 Web 项目。在 IE 9 以上的所有浏览器中,效果都很好,但不幸的是我必须支持 IE 8。
在未捆绑的文件中,IE 8 甚至无法加载我的 main.js 文件。它失败并显示以下控制台消息,但未指示任何代码行。
Potentially unhandled rejection [4] SyntaxError: Error loading "main" at http://localhost:8080/assets/js/main.js
Error loading "npm:babel-core@5.8.22" at http://localhost:8080/assets/libs/npm/babel-core@5.8.22.js
expected identifier
我使用 jspm 作为依赖管理器。使用构建的捆绑 sfx 文件会jspm bundle-sfx
产生不同的错误:
cannot read property "call" of undefined
这里,至少给出一行,它指向system.js核心的如下函数:
function forEachGlobal(callback) {
iterateGlobals(function(globalName) {
if (indexOf.call(ignoredGlobalProps, globalName) != -1)
return;
try {
var value = loader.global[globalName];
}
catch(e) {
ignoredGlobalProps.push(globalName);
}
callback(globalName, value);
});
}
indexOf 在将其记录到控制台时确实在此处未定义,尽管它不应该,因为它是在文件的前面定义的。
我能给你的唯一相关的附加信息是我的package.json
:
{
// some metadata
"devDependencies": {
"jspm": "^0.15.7",
"jspm-bower-endpoint": "^0.3.2",
// some more grunt tasks
},
"jspm": {
"directories": {
"baseURL": "source",
"packages": "source/assets/libs"
},
"dependencies": {
// frontend libraries
},
"devDependencies": {
"babel": "npm:babel-core@^5.1.13",
"babel-runtime": "npm:babel-runtime@^5.1.13",
"core-js": "npm:core-js@^0.9.4"
},
}
}
官方上,system.js 和 babel 都支持 IE 8。我找不到其他人遇到这个问题,所以我希望有人能帮我解决这个问题。
提前致谢!