2016-07-25 12 views
2

必要なモジュールがパスを変更すると、すべての必要なパスを更新する必要があると私は心配しています! (Javaで起こらないだろう事)必要なパスはプロジェクトルートからで、相対パスではありませんか?

MyModule.js

今すぐMyModuleというディレクトリを変更します( './ libには、')今私が必要と指定するためにとにかく

require('../../lib') 

を行う必要がある必要がプロジェクトルートからのパス?

require('/lib') 

私はあなたのノードアプリ、最初の実行を実行する前に

+1

あなたはそれを行うことはできません。別々のnpmパッケージを作成することを検討してください。 – SLaks

+0

これの可能な複製:http://stackoverflow.com/questions/10265798/determine-project-root-from-a-running-node-js-application?rq=1 –

+0

@Slaks私はそれらが本当に内部です私のプロジェクト私は私のプロジェクトの一部です。この機能は、Javaから来る私のためにとても基本的に聞こえるが、それはどのようにそれが箱からではないのか分からない。 – Jas

答えて

2

をフォーマットを欠いている場合、私は私の携帯申し訳ありませんから、これを書いている:

Linux: export NODE_PATH=. 
Windows: set NODE_PATH=. 

あなたは、NPMの起動スクリプト自体にそれを追加することができますしたがって、簡単に自動化することができます。

例:

Directory tree

my_example/ 
├── lib 
│   ├── a 
│   │   └── index.js 
│   └── b 
│    └── index.js 
├── package.json 
└── server.js 

ファイルの内容:

package.json

{ 
    * 
    * 
    "scripts": { 
    "start": "export NODE_PATH=./lib/;node server.js" 
    }, 
    * 
    * 
} 

./lib/a/index.js

console.log("hi from module a"); 
require("b/index"); 

./lib/b/index.js

console.log("hi from module b"); 

./server.jsnpm startを実行している上

require("a/index"); 

OUTPUT:

hi from module a 
hi from module b 
+0

これは、他の開発者が自分のプロジェクトで作業しているときに非起動にする必要があるということですか?また、私はノードプロジェクトを切り替える場合、私はこのパラメータをリセットする必要がありますか? – Jas

+0

あなたがnpm startに入れたときに実行されるたびに、ノードが実行される前に自動的に設定され、開いているシェルを探して死んでしまいます。 – Iceman

+0

@Jasは完全な詳細を含む完全な例を含めるように編集しました。 – Iceman

関連する問題