2016-05-10 3 views
1

私たちはアプリのバックエンドにSails.jsを使用しています。フロントエンドには角2を使用しています。 Angular 2 rc1がリリースされる前は、すべてが完璧に機能しました。私はアップグレードを開始し、いくつかの障害にぶつかった。角2とSails.js

まず、フロントエンドからnode_modulesフォルダーにあるものにアクセスすることはできません。そこで、@angular/フォルダ、rxjs/、およびzone.jsのように、node_modulesが必要なぎこちぎのタスクがあります。これは機能しているようです。私は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で稼働させるには他にどのようなオプションが必要ですか? systemjs.config.jsファイル、layout.ejsファイル、およびmain.tsファイルと

**** EDIT ****

Here is a gist

答えて

0

@angularパッケージの読み込みを開始しました。なぜこれが問題だったのか分かりませんが、それは私に影響することが判明しました。私のtsconfig.jsonファイルには、outFileという属性が宣言されていました。私はそのファイルが正しい場所に転送されて出力されていることを確認しましたが、outFile属性を削除してその部分を独自に決定するまでは機能しませんでした。

これは皆の問題に対する答えではないかもしれませんが、それは私のために働いていました。

+0

私はgruntコピータスクを編集することで同じことをしますが、依存関係が最初に反映されていないときにサーバを持ち上げたときに気づきました。サーバーを停止してもう一度起動すると、依存関係が発生します。 –

-1

Rails APIベースのアーキテクチャでは、セイル/角型アプリケーションを作成する最良の方法です。スタンドアロンのAngular2アプリケーション用のセイルからビューを削除し、REST APIを作成します。次にAngular2の角度2の素材を使用します。このようにすれば、問題は最小限に抑えられます。

+0

私はそれを行うための「最善の方法」はあなたが提案したものであるとは反対します。セールズを返すと、角度のあるアプリのインデックスページは完璧に機能し、期待どおりに機能します。 – pjlamb12