在我的本地机器上,这段代码:
var path = require('path');
var appdir = path.dirname(require.main.filename);
console.log(appdir);
将记录“c:\sites\mysite”
在 Azure 上,我看到的是:D:\Program Files (x86)\iisnode
我知道,从将节点版本设置为我自己的 http://www.windowsazure.com/en-us/develop/nodejs/common-tasks/specifying-a-node-version/我的应用程序的路径是 D:\home\site\wwwroot
并且,根据docs http://nodejs.org/api/modules.html“通过检查require.main.filename可以获取当前应用程序的入口点。”
关于可能出什么问题的任何想法吗?
当您在本地计算机上运行应用程序时,您可能会执行以下命令
node.exe your_application.js
因此require.main.filename http://nodejs.org/api/modules.html#modules_accessing_the_main_module返回您的应用程序的入口点。
请注意,当您将应用程序部署到 Windows Azure 网站时,您使用iisnode https://github.com/tjanczuk/iisnode- 原生 IIS 7/8 模块,允许在 IIS 7/8 中托管 Node.js 应用程序。因此require.main.filename
回报D:\Program Files (x86)\iisnode
在 Windows Azure 上。
我建议使用__dirname http://nodejs.org/api/globals.html#globals_dirname模块局部变量(通常与path.join() http://nodejs.org/api/path.html#path_path_join_path1_path2 e.g. var mydir = path.join(__dirname, '..')
)以获得所需的目录。
我希望这能解释你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)