2012-02-18 73 views
1

我一直在尝试Node.js在Windows Azure模拟器中运行,但不幸的是它不工作。当然,我从开始,Hello World应用程序开始,按照this tutorial中的步骤操作。在Windows Azure模拟器中运行的Node.js Web应用程序

我按照下面的步骤与4台不同的电脑,并在所有情况下,该网页并没有显示任何内容。

  • 我以管理员身份打开Windows PowerShell环境。
  • 我创建的节点目录
  • 我输入命令:PS C:\节点>新建 - AzureService任务列表
  • 我输入命令:PS C:\节点\任务列表>添加-AzureNodeWebRole

在这里,我的应用程序与上面的代码创建:

var http = require('http'); 
var port = process.env.port || 1337; 
http.createServer(function (req, res) { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello World\n'); 
}).listen(port); 
  • 最后,我输入命令:PS C:\节点\任务列表\ WebRole1>启动AzureEmulator - 启动

现在我应该看到我的你好世界的页面。问题是,如果有人在给定的教程中取得成功?我做错了什么?

回答

4

我有你的确切相同的错误,并在互联网上寻找很长一段时间,我发现this post

总而言之,问题在于Azure的Node包内有一个脚本,它试图将“网络服务”权限授予Web根目录。 但是我的系统语言是it-it,所以我没有一个名为“Network Service”的用户。

所以你需要编辑脚本。如果您的应用程序路径为C:\节点\任务列表则脚本位于

C:\node\tasklist\local_package.csx\roles\WebRole1\approot\bin\setup_web.cmd 

只是改变这一行:

icacls ..\ /grant "Network Service":(OI)(CI)W 

与此:

icacls ..\ /grant "NetworkService":(OI)(CI)W 

这为我工作!

+0

这是一个奇迹!它像一个魅力一样工作!如何来一个愚蠢的空白空间让我失去这么多时间? :(非常感谢你! – 2012-04-02 23:56:10

+1

我以为完全一样...只是FYI,该文件是从位于'C:\ Program Files文件(x86)\ Microsoft SDK \ Windows Azure \ Nodejs \ Nov2011 \ PowerShell的脚手架文件生成的\ Scaffolding \ Node \ WebRole \ bin \ setup_web.cmd' 您应该编辑该文件,否则您将不得不修改您将来制作的每个新软件包 – 2012-04-03 00:02:45

+0

好戏!事实上,我停止尝试使用azure模拟器,因为(我无法做到这一点),我遇到了Cloud9!但它有很大的帮助!谢谢你浪费我的怀疑! – 2012-04-03 00:16:55

1

您可以通过尝试运行的例子直接在节点:

节点server.js

,指着一个浏览器http://localhost:1337。这使得Windows Azure仿真器不在图片中,并可能指示是否还有其他事情正在进行。

+0

嗨尼尔!感谢您的帮助,我做了您所说的,我看到我的应用程序正在运行。但我希望看到它在Windows Azure模拟器中运行。这才是重点!无论如何谢谢你! – 2012-02-19 18:43:55

+0

我成功地运行了上述示例。对于node.js的Windows Azure支持在工作角色和Web角色中完全不同。由于它使用node.exe命令行成功运行,因此它应该在辅助角色中成功运行,因为它只是启动node.exe。我会尝试使用工作者角色而不是Web角色的上述示例。如果这也失败了,您可能想尝试全新安装Windows Azure SDK v1.6和Windows Azure for Node.js. – 2012-02-19 23:04:45

+0

您是否按照我所说的完全运行?我不明白我做错了什么!我只是格式化我的电脑再次尝试。我在通过Web安装程序API安装任何除Azure之外的Node.js之前执行了所有步骤。你在使用上周五发布的模拟器吗? – 2012-02-20 00:58:06

相关问题