2012-07-30 9 views
46

NodeJsプロジェクトで実行するファイルなどの問題があります。NodeJsには( './ file.js')の問題があります

a.js

var test = "Hello World"; 

b.js

require('./a.js'); 
console.log(test); 

私はBを実行します。

は、私は同じディレクトリにある2つのファイルを持っています。 jsとnode b.jsを入力し、エラーReferenceError: test is not definedを取得します。

私は私が何をしないのですドキュメントを通じてhttp://nodejs.org/api/modules.html#modules_file_modules

を見ていますか?前もって感謝します。

答えて

69

変更a.js変数エクスポートする:

exports.test = "Hello World"; 

をしてまでrequire('./a.js')の戻り値を代入変数:

var a = require('./a.js'); 
console.log(a.test); 

あなたが頻繁に見て、おそらく使用するもう一つのパターンはそうのような、a.jsmodule.exportsオブジェクトに何か(オブジェクト、関数)を割り当てることです:

module.exports = { big: "string" }; 
+2

このjsファイル(a.js)をhtmlでも使用できますか? – 0x016F2818

18

何が起こっているのか誤解しています。あなたのモジュールで定義された変数は共有されません。 NodeJSはそれをスコープします。

module.exportsと返す必要があります。

a.js

module.exports = "Hello World"; 

b.js

var test = require('./a.js'); 
console.log(test); 
+0

すばらしかったです。 – rdrey

+0

@rdrey:同じことを –

0

あなたがしたい場合は変数を別のファイルにエクスポートします.2つのパターンがあります。 一つは a.js
global.test = "Hello World"; //ここでのテストは、グローバル変数であるが、それは

他は
a.js module.exports.test = "Hello World";またはexports.test = "Hello World" のであるが汚染されています。 b.js var test = require('./a.js'); // b.jsのテストでは、a.jsでテストを取得できます console.log(テスト);