为什么Azure上的require.main.filename与我本地Windows机器上的不同?

时间:2013-12-08 17:59:08

标签: node.js azure

在我的本地计算机上,此代码:

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来获取当前应用程序的入口点。”

关于可能出错的任何想法?

1 个答案:

答案 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, '..'))以获取所需的目录。

我希望这能解释你的问题。