node.js - 由于发生内部服务器错误,无法显示该页面。Node.js 天蓝色
问题描述
我有 node.js 应用程序,当我将它部署到 Azure App 服务时它在本地工作,我收到以下错误:
由于发生内部服务器错误,无法显示该页面。
下面是我的 server.js 代码:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const errorhandler = require("errorhandler");
const morgan = require("morgan");
const cors = require("cors");
const router_1 = require("./routes/router");
const bunyan_logger_1 = require("./lib/loggers/bunyan.logger");
require("reflect-metadata");
//const database = require('./data/dbprovider/dbmssql');
class Server {
constructor() {
this.port = process.env.PORT || 3000;
this.logger = new bunyan_logger_1.bunyanLogger();
this.app = express();
this.initExpressMiddleWare();
this.initCustomMiddleware();
this.initRoutes();
this.start();
}
start() {
this.app.listen(this.port, (err) => {
if (err) {
this.logger.StartLogger().error('In Server.TS start see details: ' + err);
}
else {
console.log('Listening on http://localhost:%d', process.env.NODE_ENV, this.port);
}
});
}
initExpressMiddleWare() {
this.app.use(express.static(__dirname + '/public'));
this.app.use(morgan('dev'));
this.app.use(bodyParser.urlencoded({ extended: true }));
this.app.use(bodyParser.json());
this.app.use(errorhandler());
this.app.use(cookieParser());
this.app.use(cors());
// Add headers
this.app.use(function (req, res, next) {
// Website you wish to allow to connect
const allowOrigin = ['https://senserver4.azurewebsites.net','http://localhost:3000'];
const origin = req.headers.origin;
if (allowOrigin.indexOf(origin) > -1) {
res.setHeader('Access-Control-Allow-Origin', origin);
}
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
//this.app.use(csrf({ cookie: true }));
// this.app.use((req: { csrfToken: () => void; }, res: { locals: { _csrf: any; }; cookie: (arg0: string, arg1: any) => void; }, next: () => void) => {
// let csrfToken = req.csrfToken();
// res.locals._csrf = csrfToken;
// res.cookie('XSRF-TOKEN', csrfToken);
// next();
// });
process.on('uncaughtException', (err) => {
if (err)
console.log(err, err.stack);
});
}
initCustomMiddleware() {
if (process.platform === "win32") {
require("readline").createInterface({
input: process.stdin,
output: process.stdout
}).on("SIGINT", () => {
process.exit(1);
});
}
process.on('SIGINT', () => {
process.exit(1);
});
}
initRoutes() {
(new router_1.Router()).load(this.app, './controllers');
}
}
let server = new Server();
//# sourceMappingURL=server.js.map
我在项目的根目录中创建了 web.config 文件,下面是 web.config 代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
</appSettings>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
<modules runAllManagedModulesForAllRequests="false" />
<iisnode watchedFiles="web.config;*.js;routes\*.js;views\*.pug"/>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin" />
</hiddenSegments>
</requestFiltering>
</security>
<rewrite>
<rules>
<clear />
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^server.js\/debug[\/]?" />
</rule>
<rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="iisnode.+" negate="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
我已将 server.js 添加到路径映射中,但无法解决问题。
我在控制台中遇到的错误:
Tue Jan 14 2020 16:01:06 GMT+0000 (Coordinated Universal Time): Application has thrown an uncaught exception and is terminated:
D:\home\site\wwwroot\public\data\repos\Agent.repo.js:13
async getAllAgent() {
^^^^^^^^^^^
SyntaxError: Unexpected identifier
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (D:\home\site\wwwroot\public\controllers\api\agents\agent.controller.js:3:22)
at Module._compile (module.js:570:32)
解决方案
此错误是 IIS 服务器 500 错误的常见描述。仅通过一般描述很难找到问题的根本原因。
请尝试下面的 web.config 代码以显示可能对您有帮助的详细信息,并且不要评论您以前的代码。
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
推荐阅读
- nearprotocol - 当使用回调链接多个执行时如何分配气体
- javascript -
- r - Change normal regression model to rolling regression
- amazon-web-services - ansible-inventory not working properly with ec2.py when using --profile
- javascript - My RSA encryption and decryption function in JS doesn't work
- html - Slick Carousel 的宽度大于父元素
- c - C和GDB中地址打印值之间的差异
- xcode - 在目标 [Xcode 11] 之间共享文件夹和文件(如 Utilities.swift 文件)
- gnuplot - gnuplot:来自 url 的数据
- android-studio - 在 Android Studio 中自动完成整行的快捷方式是什么?