2014-02-07 37 views
15

我正在NodeJS中構建一個web應用,並且我在不同的模塊中實現了我的API路由。在我的一個路線中,我正在做一些文件操作,我需要知道基礎應用程序的路徑。如果我使用__dirname它給了我當然包含我的模塊的目錄。來自NodeJS模塊的應用基路徑

我目前使用它來獲取基本的應用程序路徑(因爲我知道,從基礎模塊路徑的相對路徑):

path.join(__dirname, "../../", myfilename) 

難道還有比使用../../更好的辦法?我在Windows下運行Node,所以沒有process.env.PWD,我也不想特定於平臺。

+0

使用上述多次行/多在這種情況下,在_static_類中創建一個_static_函數(例如'Paths.getBasePath();')可能會很有用 您只需要更新函數中的相對路徑如果你的項目結構發生了變化,你可以在任何地方使用'require('./Paths')。getBasePath();'而不需要再次使用'../../' –

回答

11

使用__dirname的方法是最可靠的方法。它會一直給你正確的目錄。您不必擔心Windows環境中的../../,因爲path.join()會照顧到這一點。

雖然有一個替代解決方案。您可以使用process.cwd(),它返回進程的當前工作目錄。如果從基本應用程序目錄執行節點應用程序,那麼該命令可以正常工作。但是,如果執行從不同的目錄中的節點應用,比方說,它的父目錄(如node yourapp\index.js)然後__dirname機制運行得更好。

我希望這將有助於。

+0

' process.cwd()'在應用程序中運行良好運行在應用程序的基本路徑。謝謝! '../../'可以工作,但感覺更加黑暗。 –