2016-08-09 12 views
0

私は複数のサブアプリケーションでアプリケーションを構築しています。私はこのようなfoo.jsをロードしています、app.js現在のディレクトリの上からnode_moduleをロードする

├── app1 
│   ├── app.js 
│   ├── node_modules 
│   └── package.json 
├── shared 
│   └── foo.js 

require('../shared/foo'); 

そしてfoo.jsに、私はbody-parsernpmモジュールを使用しようと、このように:

ファイル構造は、このようなものです
var bodyParser = require('body-parser'); 

これは、「モジュールエラーが見つかりません」 - body-parserがにインストールされています。ディレクトリであるが、foo.jsは明らかにそれ自身のディレクトリを探していて見つからない。

require()呼び出しに、自分のディレクトリではなく呼び出されたファイルの作業ディレクトリを使用するように指示する方法はありますか?または、この動作を許可するには、/sharedの内部にもう一度package.jsonを入れる必要がありますか?

答えて

0

私はthis Gist経由で見つかったアプローチを使用して終了:

foo.js

私はこのように見えるために私require()呼び出しを変更:

var bodyParser = require(__base + 'body-parser'); 

そしてapp.js中(foo.jsをロードする)、私はこれを追加しましたトップ:

global.__base = __dirname + '/node_modules/'; 

はそれは美しいではありませんが、それは動作します。

関連する問題