我只是尝试在我的app.js
或路由器文件中工作,以处理可能丢失的路由器错误。 (类似的stackoverflow解决方案对我没用)
我的app.js
或路由器文件因此(原样工作正常;但我正在尝试正确处理丢失的路由器错误):
'use strict'
var path = require('path');
var film = require('./healthymeals.js');
var express = require('express');
var router = express.Router();
var app = express();
module.exports = function(app) {
app.get('/allMeals', film.getAllMeals);
app.get('/meals/:id', film.getMealInfo);
app.get('/meals/:id/options',meal.getHealthyMealoptions);
app.get('*', function(req, res) {
res.send("Healthy meals");
});
我已经安装了npm' s / express错误处理包' http-status-codes'
尝试它的实施:
var HttpStatus = require('http-status-codes');
response
.status(HttpStatus.OK)
.send('ok');
response
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.send({
error: HttpStatus.getStatusText(HttpStatus.INTERNAL_SERVER_ERROR)
});
当上述情况发生时;我在&{39; response
'' ReferenceError: response is not defined
'字。 安装相关的npm包时没有错误。
function getAllApps(request, response) {
appService.getApps(request.query.$expand).then(function (apps) {
response.status(200).send(apps);
})
.catch(function (err) {
console.error('Error occurred in Apps Api: ' + err);
response.status(500).send("" + err);
});
}
我然后尝试了一些我在stackover上找到的建议, ie。
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
这是无效的,似乎只是被忽略了。任何指针赞赏(第一次使用此堆栈)。欢呼声
更新,以及来自Jonas w的答案 - 我第一次得到的时间错误如下:
TypeError: Cannot read property 'status' of undefined
然后在增加时间之后,我得到以下错误:
describe('error handling', function() {
it('handles missing routes', function(done) {
request
.get('/meals/brokenroute')
.expect(404)
.expect(function(res) {
ok('message' in res.body, '"message" key missing');
})
.end(done);
});
对于更多上下文,这里的测试是不通过我的尝试:
While choice <> "1" AndAlso choice <> "2" AndAlso choice <> "3" AndAlso choice <> "4"
答案 0 :(得分:2)
我发现的最佳解决方案(仅使用普通快递):
app.get('/allMeals', film.getAllMeals, END);
app.get('/meals/:id', film.getMealInfo, END);
app.get('/meals/:id/options',meal.getHealthyMealoptions,END);
function END(req,res){
res.end();
//note that this wont call next...
}
//all errors are handled below
app.get('*', function(req, res) {
res.status(404).end();
});