为什么SystemJS正在寻找source-map-support.js?

时间:2016-11-11 10:03:58

标签: javascript typescript systemjs jspm

我在这里完成了整个设置: https://github.com/jordymeow/meowbs-2016

我相信它很干净,但并不完美。实际上,它可以工作,但在index.html文件中,尝试切换这些注释:

//System.import('./app/app');
System.import('./src/app.ts');

基本上,我们可以直接加载app.ts而不是使用已编译的JS(由Atom编辑器自动执行),但这不起作用。 SystemJS正在寻找“source-map-support.js”并且失败了。我不确定为什么我需要这种依赖,我相信我有一个配置问题(或许多)。

你可能会在这个项目中看到很多错误;)不要犹豫告诉我。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在typescript 2.1中,他们添加了对source-map-support的可选依赖 - 在typescript.js中有这个函数:

      tryEnableSourceMapsForHost: function() {
        try {
          require('source-map-support').install();
        } catch (e) {}
      },

但是,SystemJS无法检测到它是可选的 - 为了使require在浏览器中工作,它会扫描require个调用的源代码,尝试加载所有必需的模块,然后失败。

您可以安装source-map-support模块,或者只需将此行添加到@empty即可将其映射到jspm.config.js中的special module named map

"source-map-support": "@empty",

然后您还需要将defaultExtension: 'ts'添加到src包配置中,否则import { AppModule } from "./app.module";会尝试加载app.module.js

总之,jspm.config.js中更改的片段看起来像

    "src": {
      "defaultExtension": "ts",
      "meta": {
        "*.ts": {
          "loader": "plugin-typescript"
        }
      }
    }
  },

  map: {
    "source-map-support": "@empty",