如果我的导入语句中没有 .js,Angular 2 会抛出错误

Posted

技术标签:

【中文标题】如果我的导入语句中没有 .js,Angular 2 会抛出错误【英文标题】:Angular 2 is throwing and error if I don't have .js in my import statements 【发布时间】:2016-05-06 10:06:15 【问题描述】:

我按照 angular.io 的 5 分钟快速入门中的说明进行操作,一切正常。我使用时不必声明.js

import Component from 'angular2/core';

然后我开始使用 templateUrl 来加载其他组件

import NavMenuComponent from '../nav/navMenu';
@Component (
    selector: 'my-app',
    templateUrl: 'main.html',
    directives: [NavMenuComponent]
)
export class AppComponent 

当我运行代码时,我收到一条错误消息,提示找不到 localhost:300/src/nav/navMenu

但是如果我在末尾添加一个 .js

 import NavMenuComponent from '../nav/navMenu.js';

它工作正常。我已经将 index.html 设置为..

<script>
    System.config(
        packages: 
            app: 
                format: 'register',
                defaultExtension: 'js'
            
        
    );
</script>

难道不应该这样我就不必再在导入时使用 .js 扩展名了吗?提前致谢。

【问题讨论】:

要么在系统配置中更改您的包,要么将src 文件夹更改为app @Langley,我不关注。 angular.io 没有系统配置文件。请您更具体地说明一下修复方法。 不是 config.js 文件,您在代码中拥有的 System.config( packages: app: 部分。 您的 System.config 指定在 app 包下的内容上使用默认扩展名 js,但就我所见,您的组件在 src 下而不是 app 下: localhost:300/src/nav/navMenu 这有意义吗? 我想是的。所以我必须将 app 更改为 src 或创建一个带有 defaultExtension 的 src?对吗? 【参考方案1】:

解决方案正是上面@Langely 发布的。一旦我添加了必要的文件夹,它就可以工作了。最后,我把所有东西都放在了一个可以处理所有事情的伞下。

app
-- controllers
    -- file.ts

【讨论】:

以上是关于如果我的导入语句中没有 .js,Angular 2 会抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rollup for Angular 2 的 AoT 编译器并导入 Moment.js

Angular 2:将外部js文件导入组件

Angular:无法导入 Sequelize

通过模块导入多个 Angular 组件

Angular js 2 'node_modules/rxjs/Observable"' 没有导出的成员 'Observable'。导入 Observable

从 Karma 覆盖率报告中排除 angular.js、angular-ui-router.js、angular-mocks.js 等导入文件