Typescript应用程序没有查找node_modules文件夹

时间:2016-04-10 16:44:52

标签: javascript typescript angular

当我从我的服务器的根目录加载应用程序时,该应用程序正常工作。这在实践中是不可能的,因为我们的应用程序使用了漂亮的URL。例如http://www.website.com/modules/worker/person/1/1/1加载包含上一个网址的网页会导致system.js查找文件夹/modules/worker/person/1/1,而不是基于" /"的文件夹。

解决方案是设置baseURL:"/",以便根据根目录加载模块。

此解决方案的问题是节点模块未正确加载,而不是查看node_modules目录,system.js正在查找根目录。 system.js查找/angular2/http.js而不是/node_modules/angular2/http.js

当我从"节点"切换时模块编译到"经典"结果是一样的。

有关如何进行的任何想法?

1 个答案:

答案 0 :(得分:1)

以下是使用System.config对象中的paths属性解决此问题的方法:

    System.config({
        defaultJSExtensions: true,
        baseURL: "/",
        paths: {
            'modules/worker/*': '/modules/worker/*',
            'angular2/*': '/node_modules/angular2/*',
            'rxjs/*': '/node_modules/rxjs/*',
        },
        packages: {
            modules : {
                worker: {
                    format: 'register',
                    defaultExtension: 'js'
                }
            }
        }
    });
    System.import('modules/worker/main')
            .then(null, console.error.bind(console));

对于在main.js(所有外部库)外部加载的每个资产,我必须在路径配置属性中直接指向它们。此列表将根据您发布的Typescript类的依赖性而有所不同。