我从typescript文件中的以下导入开始。注意不。ts扩展意味着我正在导入一个typescript模块:
import githubService from './github.service';
它被传输到:
var github_service_1 = require('./github.service');
当systemjs尝试加载此模块时,它会发出以下http命令:
GET /github.service
而不是
GET /github.service.js
。这显然行不通。如何使typescript与systemjs一起工作?
这是我的tsconfig.json文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./dist",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true
},
"exclude": [
"node_modules"
],
"compileOnSave": false
}
我还试图将上面的
module
选项更改为system
(将生成的模块格式从commonjs更改为systemjs),但我仍然遇到同样的问题。 最佳答案
我认为您的问题是模块名中缺少js扩展。不久前,system.js更改了此选项,现在可以在不显式指定“.js”的情况下解析它们,您必须在index.html中设置system.js选项,如下所示:
System.defaultJSExtensions = true;
更多信息:defaultJSExtensions
编辑
正如@naresh指出的,defaultjsextensions现在已经过时了。现在看来,更可取的方法是在config中使用packages选项。
希望这有帮助。