2013-05-20 77 views
2

我有這樣的代碼在這裏:爲什麼需要和fs.existSync使用不同的相對路徑

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

爲什麼要fs.existSync是使用不同的目錄require

這將是不包括的東西不需要目錄樹......(我用快遞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); 
+0

我不明白'接近'票,我認爲這是一個適當的問題。 – robertklep

+0

這是一個正確的問題-.- – FabianCook

回答

3

您使用require的路徑是相對於您撥打require文件(所以相對到routes/index.js);您爲fs.existsSync()(和其他fs函數)使用的路徑相對於當前工作目錄(如果您的應用不執行fs.chdir來更改該目錄,則該目錄是當您啓動node時最新的目錄)。

至於這種差異的原因,我只能猜測,但require是一種機制,其中一些'額外'的邏輯w.r.t.找到其他模塊是有道理的。它也不應該受到應用程序運行時更改的影響,如前面提到的fs.chdir

相關問題