【问题标题】:Why is require.main.filename different on Azure that it is on my local windows machine?为什么 Azure 上的 require.main.filename 与我的本地 Windows 机器上的不同?
【发布时间】:2013-12-08 17:59:08
【问题描述】:

在我的本地机器上,这段代码:

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

对可能出现的问题有任何想法吗?

【问题讨论】:

    标签: node.js azure


    【解决方案1】:

    当您在本地计算机上运行应用程序时,您可能会执行以下命令

    node.exe your_application.js
    

    这就是require.main.filename 返回应用程序入口点的原因。

    请注意,当您将应用程序部署到 Windows Azure 网站时,您使用 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, '..'))以获得所需的目录。

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

    【讨论】:

    • 是的。 . .这就说得通了!当然,到达应用程序的根目录而不是节点的启动位置会很好,但事实证明我让它与相对路径一起工作,我认为这是“正确”的方式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多