2016-05-10 4 views
1

Мы используем Sails.js для бэкэнда нашего приложения, с угловым 2 на переднем конце. Перед выпуском Angular 2 rc1 все работало отлично. Я начал модернизировать и ударил несколько коряг.Угловые 2 и Sails.js

Во-первых, мы не имеем доступа к чему-либо в папке node_modules с переднего конца. Поэтому, чтобы добиться этого, у нас есть задача gulp, которая принимает node_modules, который нам нужен, например, @angular/, rxjs/ и zone.js. Кажется, это работает. Когда я ссылаюсь на js/dependencies/zone.js/dist/zone.js в HTML-файл, он отлично переносит файл. Но тогда, когда вы настраиваете 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. Ошибки исчезли с консоли в браузере, но приложение, безусловно, не загружается.

Есть ли другой способ получить файлы @angular, которые будут доставлены SystemJS? Какие еще варианты я могу получить, чтобы приложение Angular 2 работало с Sails?

**** EDIT ****

Here is a gist с systemjs.config.js файла, файл layout.ejs, и файл main.ts.

ответ

0

Я получил свое приложение, чтобы начать загрузку пакетов @angular, как и предполагалось. Я не уверен, почему это было проблемой, но это оказало на меня влияние. В моем файле tsconfig.json у меня был объявлен атрибут outFile. Я убедился, что файл был передан и выведен в нужное место, но он не сработал, пока я не удалю атрибут outFile и не дам ему определить эту часть самостоятельно.

Это не может быть ответом на все вопросы, но это сработало для меня.

+0

Я делаю то же самое, редактируя задачу копирования grunt, но я заметил, когда я поднимаю сервер в первый раз, когда зависимости не отражают. Если я остановлю сервер и запустил его снова, там будут зависимости. –

-1

Лучший способ сделать паруса/угловое приложение - сделать это с помощью архитектуры REST API. Вы удаляете представления с парусов и создаете API REST для автономного приложения Angular2. Затем вы используете угловой материал 2 в Angular2. Таким образом, у вас будет меньше проблем.

+0

Я не согласен с тем, что «лучший способ» - это то, что вы предложили. Возвращение Sails страницы индекса углового приложения отлично работает и работает так, как ожидалось. – pjlamb12

Смежные вопросы