2013-12-08 35 views
3

在我的本地機器上,這樣的代碼:爲什麼Azure上的require.main.filename不同,它位於本地Windows計算機上?

var path = require('path'); 
var appdir = path.dirname(require.main.filename); 
console.log(appdir); 

將記錄 「C:\網站\ mysite的」

在Azure上,我看到這個代替:d:\程序文件(x86)\ iisnode

我知道,從setting the node version to be my own的路徑是否我的應用程序是d:\家\網站\ wwwroot的

而且,根據docs「的條目當前應用程序可以通過檢查require.main獲得點。文件名。」

有什麼想法可能會出錯?

回答

3

當你在本地機器上運行應用程序,你可能執行以下命令

node.exe your_application.js 

這就是爲什麼require.main.filename返回應用程序的入口點。

請注意,當您將應用程序部署到Windows Azure Web站點時,您將使用iisnode-本地IIS 7/8模塊,它允許在IIS 7/8中託管Node.js應用程序。這就是爲什麼require.main.filename在Windows Azure上返回D:\Program Files (x86)\iisnode

我建議使用__dirname模塊本地變量(通常與path.join()例如var mydir = path.join(__dirname, '..')結合)以獲得所需的目錄。

我希望能解釋你的問題。

+1

是的。 。 。這就說得通了!肯定會很高興地到達應用程序的根目錄,而不是在哪裏開始節點,但事實證明,我得到它的相對路徑,我認爲這是「正確」的方式。謝謝! – tooshel

相關問題