如何将文件夹添加到SystemJS配置图?

时间:2016-10-26 08:42:19

标签: angular typescript systemjs

我正在使用TS和SystemJS尝试角度2。 我想在system.config.js中映射我的一个文件夹。

|_ app
|   |_ standalone
|   |  |_ rest.service.js
|   |  |_ rest.service.js.map
|   |  |_ rest.service.ts
|   |_ app.module.ts
|_ node_modules
|_ system.config.js

这是我在system.config.js中的简化版本:

System.config({
        paths: {
            'npm:': 'node_modules/'
        },
        map: {           
            '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
            'rxjs': 'npm:rxjs',
            'stalone': 'app/standalone'
        },
        packages: {
            app: {
                main: './main.js',
                defaultExtension: 'js'
            },
            stalone: {
                defaultExtension: 'js'
            },
            rxjs: {
                defaultExtension: 'js'
            }
        }
    });
})(this);

我在app.module.ts中的两个导入是:

import { RestService } from "stalone/rest.service";
import { NgModule }    from "@angular/core";

“@ angular.core”确实导入没有问题,但是当导入“stalone / rest.service”时,我收到错误:

Cannot find module 'stalone/rest.service'.

我只包含了我认为与此相关的文件。如果我错过了,请告诉我。

3 个答案:

答案 0 :(得分:1)

在编译期间,Typescript没有使用system.js。如果我理解正确,那么在编译期间会出现此错误,这实际上意味着TypeScript找不到您的模块,而不是system.js将在运行时执行此操作。

它确实适用于angular,因为typescript正在查找找到它的所有node_modules文件夹下的文件,但这对您不起作用,因为您的模块不在node_modules下。

这就是为什么你需要告诉ts编译器在哪里找到你的模块,如下所示:

{
  "compilerOptions": {
    "paths": {
      "stalone/*": ["app/standalone/*"]
    }
}

要了解所有这些在更多细节中的工作原理,您应该检查一下打字稿here的模块解析文档。

答案 1 :(得分:0)

如果在打字稿编译过程中出现此错误,请添加:

"compilerOptions": {
   ...
    "paths": {
        "standalone/*": [ "app/standalone/*" ]
    }
}

到你的tsconfig.json

注意:您需要TypeScript版本2.0或更高版本。

答案 2 :(得分:0)

尝试这样'stalone': './app/standalone'