8

ここにこのコードがあります:

if(fs.existsSync('./example/example.js')){
    cb(require('../example/example.js'));
}else{
    cb();
}

fs.existSyncとは異なるディレクトリを使用する必要があるのはなぜrequireですか?

これは、不要なものを除いたディレクトリツリーになります...(私はexpress btwを使用しています)

\example
    example.js
\routes
    index.js <-- this is the one where I am using this code
app.js <-- this one requires index.js and calls its functions using app.get('/example',example.index);
4

2 に答える 2

7

に使用するパスはrequire、呼び出すファイルに対して相対的ですrequire(つまり、に対して相対的routes/index.jsです)。fs.existsSync()(およびその他の関数)に使用するパスはfs、現在の作業ディレクトリ (アプリを実行して変更nodeしない限り、現在の作業ディレクトリ) からの相対パスです。fs.chdir

この違いの理由については、推測することしかできませんが、require他のモジュールを見つけるための「余分な」ロジックが理にかなっているメカニズムです。また、前述のfs.chdir.

于 2013-05-20T08:12:19.807 に答える