Angular 2:系统导入应用程序无法在没有文件扩展名的情

时间:2015-11-24 14:35:59

标签: angular systemjs

我对Angular和systemjs很新,但我会尝试尽可能更具体。

我正在使用angularjs2和typescript。我使用tsconfig.json编译我的.ts文件。这是我的配置:

enter image description here

接下来,我想使用systemjs通过index.html引导我的应用程序。 但我的导入不接受没有扩展名的init(下面,我的init,实际上工作):

    System.config({
        transpiler: 'typescript'
    });
    System.import('src/app.ts');

我不得不提到.ts扩展名(当我想导入手工制作的组件时,ts文件中的问题相同) 我忘记了什么吗?对于初学者来说,首次配置文档有点粗略 此外,我已经在<head>中调用了所有脚本(system.js,typescript.js,angular2.dev.js)

4 个答案:

答案 0 :(得分:4)

我有一个类似的问题,唯一的区别是我没有使用角度

@Nicolas指出正确的方向,你需要添加“defaultExtension”,对我来说,以下配置可以解决问题:

packages: {
    '.': {
        defaultJSExtensions: 'js'
    }
},

您可以在github上找到有关how to configure systemjs的更多信息

更新:戴的评论:

  

由于systemjs 0.19,该属性为defaultExtension,默认为   到* .js,所以没有必要定义包成员,除非   你正在使用非默认设置。

答案 1 :(得分:3)

我正在研究AngularJS的新版本,每次我需要设置SystemJS时,我都会在索引页面中使用此配置。

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

您需要说明您的扩展文件是什么,SystemJS加载您的模块,我帮助您。

答案 2 :(得分:2)

在angularjs Quickstart上,他们没有提到包名必须匹配。我花了一些时间来弄明白。

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

答案 3 :(得分:-2)

我建议使用Angular&#39; s 5-Min Quickstart guide中描述的过程。当问到这个问题时,我不确定它是否在后面。无需正确加载模块即可完成所有猜测。