JavaScript/Express : TypeError: res. json 不是函数

标签 javascript node.js express error-handling server

我的前端已成功连接到我的服务器;但是,我最初的获取请求抛出:

GET http://localhost:8080/events net::ERR_EMPTY_RESPONSE

每次我执行一个操作时,我的服务器都会抛出:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: res.json is not a function

这是我的 server.js:

// Require and initiate Express
const express = require('express');
const app = express();

//Import controllers, db and bodyParser
const controller = require('./controllers');
const bodyParser = require('body-parser');
const cors = require('cors');
require('./db');


//Add bodyParser & cors middleware
app.use(cors());
app.use(bodyParser.json());

//Define routes for List Events, Add Event, and Delete Event
app.get('/events', controller.listEvents);
app.post('/events', controller.addEvent);
app.delete('/events/:id', controller.deleteEvent);


//Initiate server on port 8080
app.listen(8080, () => {
  console.log('Server is listening on http://localhost:8080');
})

这是我的controller.js 中的GET:

//Gets list of events
exports.listEvents = (req, res) => {
  Event.find()
  .then(events => {
    res.json(events);
  })
}

如有任何建议,我们将不胜感激!

最佳答案

Event.find() promise 失败。 没有 catch block 来捕获错误。这就是 UnhandledPromiseRejectionWarning

的原因

您可以像这样响应错误:

exports.listEvents = (req, res, next) => {
  Event.find()
  .then(events => {
    res.json(events);
  }).catch(err => { console.log(err); next(err) });
}

并在 server.js 中添加错误处理程序,如下所示:

app.use((err, req, res, next) => {
  res.status(err.status || 500).json({
    message: err.message || "Something went wrong. Please try again",
    status: err.status || 500
  });
});

这不会解决您的问题,只是告诉您问题是什么。

关于JavaScript/Express : TypeError: res. json 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841372/

相关文章:

javascript - 有没有办法用一些 DEV 或 RELEASE 配置数据替换一些 javascript 变量(在构建时?)?

javascript - sequelize.js 中的自定义 json 响应

javascript - 在 Node.js 中通过相对路径显示图像

javascript - Node Express 中间件

node.js - EmberJS Express API | TypeError : app. 路由不是 module.exports 中的函数

javascript - 为什么复制的 HTML 看起来不像原始 HTML?

javascript - 使用 parse.com 将新数据添加到源时刷新 ng-repeat 行

javascript - 如何在解构过程中只获取传递的键值对?

node.js - 当 puppeteer 关闭 Chrome 时,indexedDB 不会保留数据库、存储或值

node.js - 如何更新passportjs设置的req.user session 对象?