【发布时间】:2016-05-10 19:03:36
【问题描述】:
我们使用 Sails.js 作为应用程序的后端,前端使用 Angular 2。在 Angular 2 rc1 发布之前,一切都运行良好。我开始升级,遇到了一些障碍。
首先,我们无法从前端访问node_modules 文件夹中的任何内容。因此,为了解决这个问题,我们有一个 gulp 任务正在获取我们需要的node_modules,例如@angular/ 文件夹、rxjs/ 和zone.js。这似乎奏效了。当我在 HTML 文件中引用 js/dependencies/zone.js/dist/zone.js 时,它会完美地拉入文件。但是在配置 SystemJS 时,文件似乎没有正确拉入。
var System;
(function(global) {
// map tells the System loader where to look for things
var map = {
'app': 'js', // 'dist',
'rxjs': 'js/dependencies/rxjs',
// 'angular2-in-memory-web-api': 'angular2-in-memory-web-api',
'@angular': 'js/dependencies/@angular',
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
// 'angular2-in-memory-web-api': { defaultExtension: 'js' },
// '/angular2-jwt': { defaultExtension: 'js' }
};
var packageNames = [
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@angular/router-deprecated',
'@angular/testing',
'@angular/upgrade',
];
// add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
packageNames.forEach(function(pkgName) {
packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
});
var config = {
map: map,
packages: packages
};
System.config(config);
})(this);
这是我用来设置 SystemJS 的配置文件。然而,rxjs 和 @angular 并没有被 SystemJS 引入。错误从浏览器的控制台中消失了,但应用程序肯定没有被引导。
还有其他方法可以让 SystemJS 拉入 @angular 文件吗?为了让 Angular 2 应用程序与 Sails 一起运行,我还有哪些其他选择?
**** 编辑 ****
Here is a gist 与 systemjs.config.js 文件、layout.ejs 文件和 main.ts 文件。
【问题讨论】: