DefaultExtension在Angular 2 app中不起作用

时间:2016-01-15 09:28:04

标签: angular systemjs

我正在尝试使用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'

3 个答案:

答案 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');