2015-07-28 88 views
1

根據這樣一個問題:What is the difference between __dirname and ./ in node.js?這些2行應該是相同的:是什麼需要之間的差(__目錄名+路徑),並且需要(./路徑)

require(__dirname + '/folder/file.js'); 
require('./folder/file.js'); 

,我總是用於使用第二選項。但現在一個項目,我接手了,以前的開發人員每次都使用require(__dirname + ...)

就我個人而言,我認爲這很難閱讀,我想改變它,但也許這是我失蹤的語法的一些優勢?或者它是首選版本,我一直在做錯?

爲防萬一它很重要,庫有時運行在node.js啓用es6,有時在io.js(沒有附加標誌)。

回答

2

當使用require()時沒有區別,使用__dirname有點多餘。模塊加載程序將負責爲您正確解析路徑。

當使用fs方法(如fs.readFile)之一時,如果您當前的工作目錄不等於__dirname,則存在差異。如果我想在同一目錄作爲我的腳本來讀取一個名爲file.txt的文件的內容,我做的:

var Fs = require('fs'); 
var Path = require('path'); 

Fs.readFile(Path.join(__dirname, 'file.txt'), ...); 

然後沒關係我CWD是什麼,當我啓動節點過程,執行該碼。