我正在编写一个简单的nodejs app来部署到azure。
该应用程序正常,100%,但我必须管理管理员事务的网页拒绝加载。
始终显示内部服务器错误。我使用快递和查看日志,但他们没有说有用。该应用程序没有崩溃,所以我不明白为什么它不会显示。
这是我用于测试的简单的hello world代码,甚至不会显示。
var express = require('express');
var app = express();
app.use(express.static('website'));
app.listen(80);
有没有人知道会出现什么问题?
编辑:我忘了包含我设置端口环境变量
var port = process.env.PORT || 80;
var baseHost = process.env.WEBSITE_HOSTNAME || 'localhost';
这就是我的server.js的顶部,对不起。
答案 0 :(得分:0)
按照此博客获取在Azure上运行的Node.js应用。我最近用它来做一个演示,它运行正常。
Create a Node.js web app in Azure App Service
您必须使用GIT和持续部署才能让Azure应用服务识别并设置适合您的节点应用程序运行的部分,它还会自动为您处理节点包。
希望这有帮助,TehDude
答案 1 :(得分:0)
尝试启用日志记录以更好地了解正在进行的操作
来自How to debug a Node.js web app in Azure App Service:
要启用stdout和stderr流的日志记录,您必须创建一个 在Node.js应用程序的根目录下的IISNode.yml文件并添加 以下内容:
loggingEnabled: true
这样可以从Node.js中记录stderr和stdout 应用
IISNode.yml文件也可用于控制是否友好 错误或开发人员错误在失败时返回到浏览器 发生。要启用开发人员错误,请将以下行添加到 IISNode.yml文件:
devErrorsEnabled: true
启用此选项后,IISNode将返回最后64K 信息发送到stderr而不是友好的错误,如" an 发生内部服务器错误"。
答案 2 :(得分:0)
猜测您的应用在Azure App Service上运行时正在侦听错误的端口。 您必须从环境变量“process.env.port”获取端口号
var app = require('express')();
var port = process.env.port || 8080; // 8080 for local or whatever number u want
var listener = app.listen(port, function(){
console.log('Listening on port ' + port);
});
答案 3 :(得分:0)
在Azure Web Apps服务上运行的Node.js应用程序通过IISNode托管在IIS处理的映射上,这使得命名管道可以接收传入的请求,而不是像在本地运行时那样使用的TCP端口。
此命名管道已定义为Azure Web Apps上Node.js运行时中的端口。您可以在应用中定义端口,例如:process.env.PORT || 3000
,您的应用可以在Azure上或本地运行。