node.js - Node js错误 "process with a non-zero exit code"

标签 node.js mongodb express

我使用 Node js 开发 REST API,并使用 MongoDB Express 开发。 我开发了一个端点来将用户插入数据库并且工作正常。现在我已经使用 jwt 添加了登录功能,现在当我运行我的应用程序并尝试插入我的用户时,我收到此错误:

an app is listening on port 3000
(node:3650) UnhandledPromiseRejectionWarning: Unhandled promise     rejection (rejection id: 1): Error: Expected "payload" to be a plain   object.
(node:3650) [DEP0018] DeprecationWarning: Unhandled promise    rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我在 Mac 上使用的 Node js 版本:8.9.3 请问有什么帮助吗?

@这是关于用户添加的代码:

var router = require('express').Router();
var bcrypt = require('bcryptjs');
var User = require('../models/user');
var jwt = require('jsonwebtoken');
var constants = require('../config/constants');

router.post('/',(req, res) => {
// add user --> user = { username: 'test', email: 'test@tes.com',  pwd: 'Test'}
var user = new User({
username: req.body.user.username,
email : req.body.user.email,
passhash: bcrypt.hashSync(req.body.user.pwd, 10)
});

user.save().then(
(newuser) => {
  var sessionToken = jwt.sign(newuser._id, constants.JWT_SECRET, {expiresIn: 60*60*24});
  res.json({
    user: newuser,
    message: 'success',
    sessionToken: sessionToken
  });
},
(err) => {
  res.send(500, err.message);
}
);
});

module.exports = router;

这是有关登录的代码:

var router = require('express').Router();
var bcrypt = require('bcryptjs');
var jwt = require('jsonwebtoken');
var constants = require('../config/constants');
var User = require('../models/user');

router.post('/', (req, res) => {
User.findOne({ username: req.body.user.username}).then(
(user) => {
  if(user){
    bcrypt.compare(req.body.pwd, user.passhash, (err, matches) => {
      if (matches) {
        var sessionToken = jwt.sign(user._id, constants.JWT_SECRET, { expiresIn: 24*60*60 });
        res.json({
          user:user,
          message: 'succesfully authed',
          sessionToken: sessionToken
        });
      }else{
        res.json({
          user: {},
          message: 'failed to auth',
          sessionToken: ''
        });
      }
    });
  }else{
    res.json({
      user: {},
      message: 'failed to auth',
      sessionToken: ''
    });
  }
},
(err) => {
  // could not find users
  res.json(err);
}
);
});

module.exports = router;

我已经用 postman 测试了添加用户,我发现当我收到发布的消息时,用户被插入到数据库中

最佳答案

如果两个 API 方法都在同一个文件中声明,则问题可能是因为您声明了两次相同的路径 + 动词:

router.post('/', (req, res) => {

关于node.js - Node js错误 "process with a non-zero exit code",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036607/

相关文章:

javascript - 如何比较两个字符串的含义?

node.js - Mac 上带有 Node 和 Express 的 Docker 容器,没有显示在浏览器中?

PHP 与 Node REST-API

c# - 如何使用 Visual Studio Code 从 .NET Core 访问 Nuget 存储库

mongodb - 如何从外部访问托管在 kubernetes 集群上的 mongodb 副本集?

javascript - NodeJS 第一个 res.body 对象在引号中

javascript - 无法访问 React 中的嵌套对象

c# - 在 MongoDB C# 驱动程序 2.2.2 中找不到 FindOne 方法

node.js - create-react-app + nodejs (express) 服务器

reactjs - Next.js-express 动态路由导致页面重新加载