2016-04-27 70 views
1

我在澳大利亞東南地區的Azure共享資源上運行非常簡單的快速網站。網站在端口3000上本地運行,但部署到Azure時根本不渲染。當嘗試從Azure上運行拋出下面的錯誤在Azure上託管的快速網站給出了意想不到的錯誤

node server.js  

events.js:141  
     throw er; // Unhandled 'error' event  

Error: listen EADDRINUSE 0.0.0.0:3000 
    at Object.exports._errnoException (util.js:874:11) 
    at exports._exceptionWithHostPort (util.js:897:20) 
    at Server._listen2 (net.js:1234:14) 
    at listen (net.js:1270:10) 
    at Server.listen (net.js:1366:5) 
    at EventEmitter.listen  (D:\home\site\wwwroot\node_modules\express\lib\application.js:617:24) 
    at Object.<anonymous> (D:\home\site\wwwroot\server.js:21:5) 
    at Module._compile (module.js:435:26) 
    at Object.Module._extensions..js (module.js:442:10) 
    at Module.load (module.js:356:32) 

Server.js看起來像

var express = require('express'); 
var app = express(); 
var path = require("path"); 
var port = process.env.PORT || 3000; 

console.log(__dirname); 

app.use(express.static('public')); 

app.get('/', function (req, res) { 
    res.sendFile(path.join(__dirname+'/index.html')); 
}); 

app.get('/contact', function (req, res) { 
    res.sendFile(path.join(__dirname+'/contact.html')); 
}); 

app.listen(port, function() { 
    console.log('Example app listening on port!' + port); 
}); 

不知道我錯過了什麼?

謝謝

+0

有些東西已經在使用3000端口,運行'netstat -l',它將輸出所有偵聽端口。 – Shanoor

+0

在您的Azure檢查端口3000也許它使用 –

回答

1

Azure網站允許通過稱爲iisnode的IIS模塊託管node.js應用程序。請參閱wiki瞭解iisnode。

尤其要注意以下內容。

對node.js應用程序代碼的最小更改。 iisnode模塊支持以最小的變化託管現有的HTTP node.js應用程序。通常情況下,所需要的只是通過process.env.PORT環境變量將HTTP服務器的列出地址更改爲由iisnode模塊提供的地址。

因此,您不需要通過在Kudu控制檯中手動命令node server.js來啓動節點應用程序。請嘗試僅通過FTP或VS部署或更新代碼,並直接訪問網站以檢查部署是否成功。如果它不起作用,您可以嘗試在Azure門戶上重新啓動應用程序。

如果要檢查運行過程,可以在Kudu工具的Process explorer中看到它們,請看下圖。

enter image description here

任何問題,請隨時讓我知道。

+0

那個技巧工作!這是iisnode模塊的問題。謝謝你的幫助。乾杯 – eruza

+0

很好的答案!真的很有幫助 – jos

0

這意味着您試圖綁定服務器的端口正在使用中。嘗試另一個端口或使用天藍色端口關閉程序。

0

好吧,

這可能是因爲你已經在3000上運行節點的實例 使用ssh連接到你的server.invoke這個命令去終端接口。

ps -ax | grep Server.js 

正在運行的進程的列表將在那裏像 enter image description here

從那裏得到1257和終端

kill 1257 

現在再次嘗試運行您的服務器。

相關問題