我正在尝试使用TypeScript设置基本的Angular 2应用。但是我被卡住了,因为SystemJS
似乎没有对defaultExtension: 'js'
选项做任何事情。
我的index.html
看起来像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<base href="/test/">
<meta charset="UTF-8">
<title>Test</title>
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<script>
System.config({ packages: { app: { format: 'register', defaultExtension: 'js', } } });
System.import('backend/app/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<app>Loading</app>
</body>
</html>
但是这会给我以下错误:
GET http://localhost:1122/test/backend/app/boot 404 (Not Found)
我可以将.js
扩展名添加到System.import
命令中的路径中,以便它看起来像这样:
System.import('backend/app/boot.js')
然后 能够找到boot.js
,但它会抱怨 找不到app.component
。所以基本上我必须为该导入添加.js
扩展名,以及我将在我的应用程序中添加的所有其他组件。
我认为这不是我必须要解决的问题。那么我该如何解决这个System.import
问题呢?看起来它出于某种原因忽略了defaultExtension: 'js'
。
答案 0 :(得分:8)
您要将js
设置为app
包的默认扩展名,但您的代码位于backend/app
,而不是app
,请删除后端文件夹或修复你的包配置。
答案 1 :(得分:2)
尝试Angular2并遇到同样的问题。我猜,另一种选择可能是使用baseURL。 E.g:
System.config({
baseURL: 'backend/',
packages: {
app: {
format: 'register',
defaultExtension: 'js',
}
}
});
System.import('app/boot')
.then(null, console.error.bind(console));
答案 2 :(得分:1)
我有同样的问题,我可以找到以下解决方案。 使用地图将您的额外路径添加到您的应用文件夹,如下所示
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
},
map: { 'app': './backend/app' }
});
System.import('app/boot');