web-dev-qa-db-ja.com

NodeJs require( './ file.js')の問題

NodeJsプロジェクトで実行するファイルなどの問題があります。

同じディレクトリに2つのファイルがあります。

a.js

var test = "Hello World";

そして

b.js

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

node b.jsを指定してb.jsを実行すると、エラーReferenceError: test is not definedが表示されます。

私はドキュメントを調べました http://nodejs.org/api/modules.html#modules_file_modules

私は何が欠けていますか?前もって感謝します。

61
Patrick Lorio

a.jsを変更して変数をエクスポートします。

_exports.test = "Hello World";
_

require('./a.js')の戻り値を変数に割り当てます。

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

あなたがよく目にし、おそらく使用する別のパターンは、何か(オブジェクト、関数)をa.jsの_module.exports_オブジェクトに割り当てることです:

_module.exports = { big: "string" };
_
84
rdrey

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

module.exportsで返さなければなりません。

a.js

module.exports = "Hello World";

b.js

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

別のファイルに変数をエクスポートする場合。2つのパターンがあります。 1つは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(test);

0
philipzhao