Javascript 为什么SystemJS在寻找source-map-support.js?
我在这里有我的全部设置: 我相信它很干净,但并不完美。实际上,它可以工作,但在index.html文件中,尝试切换这些注释:Javascript 为什么SystemJS在寻找source-map-support.js?,javascript,typescript,systemjs,jspm,Javascript,Typescript,Systemjs,Jspm,我在这里有我的全部设置: 我相信它很干净,但并不完美。实际上,它可以工作,但在index.html文件中,尝试切换这些注释: //System.import('./app/app'); System.import('./src/app.ts'); 基本上,我们可以直接加载app.ts,而不是使用编译后的JS(由Atom编辑器自动执行),但这不起作用。SystemJS正在寻找“SourceMapSupport.js”,但失败了。我不知道为什么我会需要这种依赖性,我相信我有一个配置问题(或其中许
//System.import('./app/app');
System.import('./src/app.ts');
基本上,我们可以直接加载app.ts,而不是使用编译后的JS(由Atom编辑器自动执行),但这不起作用。SystemJS正在寻找“SourceMapSupport.js”,但失败了。我不知道为什么我会需要这种依赖性,我相信我有一个配置问题(或其中许多)
您可能会在这个项目中看到许多错误;)别犹豫告诉我
感谢您的帮助。在typescript 2.1中,他们添加了对源映射支持的可选依赖项-typescript.js中有此函数:
tryEnableSourceMapsForHost: function() {
try {
require('source-map-support').install();
} catch (e) {}
},
但是,SystemJS无法检测到它是可选的-为了使require
在浏览器中工作,它扫描源代码以查找require
调用,尝试加载所有必需的模块,但失败
您可以安装源映射支持模块,也可以通过将此行添加到map
,将其映射到jspm.config.js中的@empty
:
"source-map-support": "@empty",
然后您还需要将defaultExtension:'ts'
添加到src
包配置中,否则import{AppModule}来自“/app.module”
将尝试加载app.module.js
总之,jspm.config.js中更改的片段如下所示
"src": {
"defaultExtension": "ts",
"meta": {
"*.ts": {
"loader": "plugin-typescript"
}
}
}
},
map: {
"source-map-support": "@empty",
对于src中的.ts文件,您有
loader:typescript
,以及“typescript”:“npm:typescript@2.1.1“
在地图中。我不确定typescript是否应该用作systemjs的加载程序,我建议改为使用。@artem我试过了,实际上我在GitHub上提交了更改。。。然而,当我尝试时,我得到了完全相同的错误。@artem实际上我有两个问题,你提到的那个,然后我不得不手动添加源代码映射支持,方法是:jspm I--dev npm:source map support非常感谢,这是一个极好且非常完整的答案!太有用了!还有一个问题,是否建议使用@empty?这取决于-如果您打算坚持使用SystemJS,那么假设它将受到支持是相对安全的(最坏的情况是,您可以使用您想要的任何名称注册空模块,@null
或其他任何名称,使用SystemJS API)。否则,如果您确信在浏览器中加载源代码映射支持不会破坏编译,只需将其作为依赖项提供即可。插件typescript的开发人员通过删除对源代码映射支持的依赖项来进行了少量更新:)如果是的话,它应该为jspm用户修复-jspm现在意识到这种依赖性,并将在使用jspm安装typescript 2.1时安装它