2016-04-27 68 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 

现在再次尝试运行您的服务器。

相关问题