如何获取服务器节点js错误?

时间:2020-01-24 20:04:38

标签: node.js json express

我在Node.js和Express中构建了auth应用程序。现在,我正在编写后端。 我使用MongoDB数据库。

我使用后查询来登录带有下一个JSON数据的页面。

存在错误-电子邮件字段必须位于双引号中,但我希望服务器不会崩溃,并以错误答复我

我将body-parser包与下一个代码一起使用

app.use(bodyParser.json()) 
app.use(bodyParser.urlencoded({ extended: true })) 

我有下一个功能:

const bcrypt = require('bcryptjs')
const User = require('../model/User')
const authHelper = require('../helpers/authHelper')
const config = require('../config')

module.exports = async (req, res) => {

  try {
    const {
      email,
      password
    } = req.body

    if(!(email || password)) {
      throw new Error('Enter the properties correctly')
    }

    const user = await User.findOne({
      email
    })
    if (!user) return res.status(400).json({
      message: 'Email or password is wrong'
    })

    const validPass = await bcrypt.compare(password, user.password)
    if (!validPass) return res.status(400).json({
      message: "Email is not found"
    })

    const accessToken = authHelper.generateAccessToken(user._id).token
    const refreshToken = authHelper.generateRefreshToken(user._id).token

    // res.set({
    //   "access-token": accessToken.token,
    //   "refresh-token": refreshToken.token,
    // })

    return res.json({
      "accessToken": accessToken,
      "refreshToken": refreshToken,
    })
  } catch (e) {
    return res.json({
      msg: e.message
    })
  }
}

这是查询

{
    email: "test@test.com",
    "password": "test"
}

错误消息:

SyntaxError: Unexpected token e in JSON at position 3
at JSON.parse (<anonymous>)
at parse (R:\Projects\jwt-auth\node_modules\body-parser\lib\types\json.js:89:19)
at R:\Projects\jwt-auth\node_modules\body-parser\lib\read.js:121:18
at invokeCallback (R:\Projects\jwt-auth\node_modules\raw-body\index.js:224:16)
at done (R:\Projects\jwt-auth\node_modules\raw-body\index.js:213:7)
at IncomingMessage.onEnd (R:\Projects\jwt-auth\node_modules\raw-body\index.js:273:7)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)

2 个答案:

答案 0 :(得分:0)

尝试修复电子邮件密钥:

{
    "email": "test@test.com",
    "password": "test"
}

JSON对象密钥必须在双行之间。

答案 1 :(得分:0)

可能问题在于此结构:

const {
      email,
      password
    } = req.body

尝试:

const email = req.body.email;
const password = req.body.password;