DefaultExtension 在 Angular 2 个应用程序中不起作用

DefaultExtension not working in Angular 2 app

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

可以System.import命令的路径中添加.js扩展名,使其看起来像这样:

System.import('backend/app/boot.js')

然后它能够找到boot.js,但是它抱怨它不能找到app.component.所以基本上我必须为该导入以及我将在我的应用程序中拥有的每个其他组件添加一个 .js 扩展。

我认为这不是我必须寻求的解决方案。那么我该如何解决这个 System.import 问题呢?看起来它出于某种原因忽略了 defaultExtension: 'js'

您正在将 js 设置为 app 包的默认扩展名,但您的代码在 backend/app 中,而不是 app 中,或者删除后端文件夹或修复您的包配置。

刚试用 Angular2 遇到了同样的问题。我想,另一种选择可能是使用 baseURL。例如:

System.config({
        baseURL: 'backend/',
        packages: { 
                app: { 
                    format: 'register', 
                    defaultExtension: 'js', 
                } 
        } 
});

System.import('app/boot')
        .then(null, console.error.bind(console));

我遇到了同样的问题,我可以找到以下解决方案。 像这样使用地图将您的额外路径添加到您的应用程序文件夹

    System.config({
        packages: {
            app: {
                format: 'register',
                defaultExtension: 'js'
            }
        },
        map: { 'app': './backend/app' }
    });
    System.import('app/boot');