【发布时间】:2021-06-26 23:44:30
【问题描述】:
我期待我的 expressjs api 中有一个 json。但是当我收到请求时出现以下错误
SyntaxError: Unexpected token ' in JSON at position 2
at JSON.parse (<anonymous>)
at parse (/home/admin/middleware-2.0/node_modules/body-parser/lib/types/json.js:89:19)
at /home/admin/middleware-2.0/node_modules/body-parser/lib/read.js:121:18
at invokeCallback (/home/admin/middleware-2.0/node_modules/raw-body/index.js:224:16)
at done (/home/admin/middleware-2.0/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/home/admin/middleware-2.0/node_modules/raw-body/index.js:273:7)
at IncomingMessage.emit (events.js:388:22)
at endReadableNT (internal/streams/readable.js:1336:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
是的,我确定请求格式不是 json,但我们无法登录以检查请求。我们无权访问源应用程序代码以在源代码级别进行验证。我怎样才能在我的 api 中做到这一点。
下面是快递代码
const express = require('express')
const app = express();
app.post('/n2/offline', (req, res) => {
console.log('req before', req.body)
res.status(200).send();
} )
const port = 3001
app.use(express.json());
app.listen(port, () => {
console.log(`Message Receiver accepting requests on port ${port}`)
})
【问题讨论】:
-
您无法登录,因为请求在 post 功能之前失败,在日志之前。您有一个中间件
app.use(express.json());正在尝试将您的请求解析为 json。尝试删除它,然后检查您在请求中获得的格式