Angular 2 : how to resolve Error: (SystemJS) module is not defined?

标签 angular typescript

我是 angular2 的新学习者。我们知道在 Angular2 中有一种通过相对路径引用文件的方法,即通过在组件元数据中定义 moduleId : module.id 来引用文件。但是我尝试通过这种方式,但总是收到以下错误:

Error: (SystemJS) module is not defined 

我在这里构建了一个plunker:a simple angular2 app

文件结构如下,非常简单:

enter image description here

各部分内容如下:

config.js:

System.config({
    //use typescript for compilation
    transpiler: 'typescript',
    //typescript compiler options
    typescriptOptions: {
        emitDecoratorMetadata: true,
        module: "commonjs"
    },
    meta: {
        'typescript': {
            "exports": "ts"
        }
    },
    paths: {
        'npm:': 'https://unpkg.com/'
    },
    //map tells the System loader where to look for things
    map: {

        'app': './app',

        '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
        '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
        '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
        '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
        '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
        '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
        '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
        '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

        '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js',
        '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js',
        '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js',
        '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js',
        '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js',
        '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js',
        '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js',

        'rxjs': 'npm:rxjs',
        'typescript': 'npm:typescript/lib/typescript.js'
    },
    //packages defines our app package
    packages: {
        app: {
            main: 'main.ts',
            defaultExtension: 'ts'
        },

        rxjs: {
            defaultExtension: 'js'
        }
    }
});

app.component.ts:

import { Component } from '@angular/core';

@Component({
    moduleId: module.id,
    selector: 'app',
    templateUrl: 'app.component.html'
})
export class AppComponent {

}

其他文件可以引用plunker。我已经在 typescriptOptions 中设置了 module: "commonjs"。我的代码有什么问题吗?

最佳答案

对于systemjs,这里我应该使用__moduleName而不是module.id

关于 Angular 2 : how to resolve Error: (SystemJS) module is not defined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41356123/

相关文章:

typescript - 从 TypeScript 接口(interface)到类构造函数的快捷语法

apache - 当 ng build dist 文件夹(重命名为 myapp)部署在 tomcat webapp 文件夹中时,Angular 2 无法加载图像

angular - MD Paginator 错误 : data. 切片不是 MapSubscriber 上的函数

angular - 在 @angular/core 中放置导入库的最佳实践是什么

javascript - 如何创建数组并为 typescript 中的任何索引赋值

javascript - 如何从组件循环向主要父级发出事件 angular 5

angular - 无法读取未定义的 'xxx' 的属性

angular - 如何使 mat-table 行拖放与 cdkDragHandle 一起工作,以便只能使用句柄拖动该行?

javascript - 如何从一个 index.html 文件中的不同文件夹加载多个 angular2 组件?

javascript - Angular2 toString 无法获取类的第三个属性