2016-11-03 13 views
0

エクスプレスを使用するノードアプリケーションがあります。私はexpress-generatorを使ってデフォルトのエクスプレスセットアップを生成しました。エクスプレスサブアプリケーション内で角度2のファイルをロードする方法

"ang"と "admin"(express-generatorも使用)という2つのサブアプリケーションを作成しました。これらのサブアプリケーションは別の高速アプリケーションに含まれており、私は「ホスト」と呼んでいます。

「アン」は - angular2アプリケーションならびにそのそれぞれのAPI(Expressで作られたAPI)

に「admin」をハンドル - これは、APIインターフェースとそのサイトの所有者は、データベースに新しいコンテンツを追加することを可能にします。

これは私のローカルの開発環境ではうまくいきますが、これをHerokuにプッシュすると、特定のモジュールがインストールされていない(つまり、 "admin"アプリケーションにモジュールがありません)ビルドに失敗します。

サブアプリケーションpackage.jsons(関連するサブアプリケーションとang2 package.jsonの両方)から関連する依存関係をコピーした後、私はウェブサイトの管理部分を実行することができましたが、 "ang node_modulesを検索したときに404エラーが発生するためです。

/*required modules*/ 
var app = express(); 

/*Boths paths reference different sub apps*/ 
var ang = require('./path/to/app.js'); 
var admin = require('./path/to/app.js'); 

/*Routes each app uses*/ 
app.use('/base', admin); 
app.use('/', ang); 

module.exports = app; 

を「ホストがapp.js」どうやって「ホスト」アプリ内に含まれるノード・モジュールへのルートのですか?

答えて

0

localhostからnode_modulesを削除してビルドしようとすると、なぜ私のang2アプリケーションのindex.htmlのパスを変更してパッケージを見つけることができないのか理解できました。

私のangular2アプリは静的ディレクトリに含まれています。だから、私はノードパッケージマネージャ(npm)の力を利用する必要がありました。だから私は私の "ホスト"アプリのpackage.jsonを変更しました。実行され、ホストアプリケーションのpackage.json "インストール後" コマンドをインストールした後

"scripts": { 
    "start": "node ./bin/www", 
    "postinstall": " cd /path/from/host/to/ang/client_directory && npm install" 
}, 

"scripts": { 
    "start": "node ./bin/www" 
} 

:私はから "スクリプト" フィールドを変更しました。詳細については、npm's scripts documentationを参照してください。これでディレクトリにcdが入り、そこからnpm installを実行します。そこにangular2 package.jsonがあります。

ALSO:インストール後のフィールドを正しく設定するだけであれば、他のpackage.jsonファイルからすべての依存関係を移動する必要があるかどうかはわかりません。

これはあなたにいくつかの問題を保存することを願っています!

関連する問題