2012-02-18 168 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

相關問題