Node.jsのrequire()
機能とmodule.exports
の機能と性質を一般的かつ高度に理解しています。しかし、私には意味をなさない行動がいくつかあります。ファイルに何もエクスポートされていないモジュールが必要な場合のNode.jsの動作について
2つの非常に単純な1行のファイルa.js
とb.js
があるとします。 a.js
で
:
require('./b.js');
とb.js
で:
console.log("testing");
と私はターミナルでnode a.js
を実行した場合、ここに記録されているものです:
$ node a.js
testing.
だけによるということを意味していますファイル/モジュールを必要とし、要求されたファイルの内容はエクスポ(右、?)要求を発行し、ファイルにsedを
今、私はこれにa.js
を変更します。これに
require('./b.js');
testFunc(1, 2);
とb.jsを:
var testFunc = function(a, b) {
var result = a + b;
return result;
}
と実行、再び、node a.js
端末内:
$ node a.js
/demo/a.js:3
testFunc(1, 2);
^
ReferenceError: testFunc is not defined
......
ここで何が起こっているのですか?明らかに、最初の例では、b.js
が必要です。a.js
は、b.js
のコンテンツにアクセスできます。しかし、第2の例では、ReferenceError: testFunc is not defined
で明らかなように、で定義された関数には全くアクセスできません。ここのトリックは何ですか?
require()
は、実際にコンテンツを要求ファイルに公開せずに必要なスクリプトのみを実行するためですか?したがって、他のモジュールのコンテンツを使用するには、module.exports
を使用してそのモジュールを公開する必要がありますか?
私はこの質問がES6や特急としなければならなかった何見当がつかない。 – Bergi