在我的本地计算机上,此代码:
var path = require('path');
var appdir = path.dirname(require.main.filename);
console.log(appdir);
将记录“c:\ sites \ mysite”
在Azure上,我看到了这一点:D:\ Program Files(x86)\ iisnode
我知道,从setting the node version to be my own我的应用程序的路径是D:\ home \ site \ wwwroot
并且,根据docs“,可以通过检查require.main.filename来获取当前应用程序的入口点。”
关于可能出错的任何想法?
答案 0 :(得分:3)
在本地计算机上运行应用程序时,可能会执行以下命令
node.exe your_application.js
这就是require.main.filename
返回应用程序入口点的原因。
请注意,当您将应用程序部署到Windows Azure WebSite时,您使用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, '..')
)以获取所需的目录。
我希望这能解释你的问题。