gpt4 book ai didi

javascript - node.js Express 应用程序中的“丢失路由”错误处理(失败)

转载 作者:行者123 更新时间:2023-11-29 21:00:07 26 4
gpt4 key购买 nike

我只是尝试在我的 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/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)
});

当上面运行时;我在终端中因“response”字样出现构建错误我在安装相关的 npm 包时没有出现错误。

ReferenceError: response is not defined

然后尝试了一些我在 stackover 上找到的建议,即。

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);
});
}

这是无效的,似乎只是被忽略了。任何指针感谢(第一次使用这个堆栈)。干杯


更新,下面是 Jonas w 的回答 - 我第一次遇到超时错误如下:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

然后在增加超时后,出现以下错误:

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);
});

最佳答案

我找到的最好的解决方案(仅使用 plain express):

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();
});

关于javascript - node.js Express 应用程序中的“丢失路由”错误处理(失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com