ノードのrequire
メソッドが相対パスを解決する方法を理解できません。node.jsはメソッドの相対パスの解釈をどのように必要としますか?
のは、私はこのようなファイル構造を持っているとしましょう:
root
|--- main.js
|
|--- importantUtilities.js
|
|--- apps
|
|--- app1.js
/root/main.js
と/root/apps/app1.js
両方が/root/importantUtilities.js
を必要とする場合、彼らは異なっrequire
機能パラメータ設定:
// File: /root/main.js
...
require('./importantUtilities.js');
...
// File: /root/apps/app1.js:
...
require('../importantUtilities.js');
...
をする必要はありません前もって__dirname
と書かれていますが、この情報がないとrequire
がどのように機能するのかわかりません。
require
を実装して、ファイル記述子ごとに同じファイルを返すことはできますか?
EDIT:次の例は、(同じファイル構造を使用して)私の心を吹くにも働くという事実:
// File: /root/main.js:
...
module.exports.getUtilities = function() { return require('./importantUtilities.js'); };
var utilities = module.exports.getUtilities(); // Works fine
...
// File: /root/apps/app1.js:
...
var main = require('../main.js');
var utilities = main.getUtilities(); // Works fine
...
require
でも呼び出すスコープから基本パスを決定していないようです。ソースコード内に何らかの形でrequire
が出現すると、ソースコードのファイルパス情報にバインドされるようになります。これは正しいです?
どのように動作しますか?
これはほとんど前処理に似ています!正確に私が探していたドキュメントリンク:D –