2

我正在开发一个使用 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。我找不到其他人遇到这个问题,所以我希望有人能帮我解决这个问题。
提前致谢!

4

0 回答 0