【发布时间】:2018-11-15 18:54:59
【问题描述】:
我有这个小型 Express 服务器:
var express = require("express");
var app = express();
app.use(express.json());
app.post("/hackme", (req, res) => {
if(!req.body.foo) {
return res.send({ error: 'oh no' });
}
return res.send({ lbxapi: '1.1' });
});
app.listen(3050, function() {
console.log("Express running");
});
当我将无效的 JSON POST 正文发送到以下服务器时,我的完整错误堆栈如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>SyntaxError: Unexpected string in JSON at position 18
<br> at JSON.parse (<anonymous>)
<br> at parse (/home/jan/Desktop/linkbox_beta2_github/code/experiments/node_modules/body-parser/lib/types/json.js:89:19)
<br> at /home/jan/Desktop/linkbox_beta2_github/code/experiments/node_modules/body-parser/lib/read.js:121:18
<br> at invokeCallback (/home/jan/Desktop/linkbox_beta2_github/code/experiments/node_modules/raw-body/index.js:224:16)
<br> at done (/home/jan/Desktop/linkbox_beta2_github/code/experiments/node_modules/raw-body/index.js:213:7)
<br> at IncomingMessage.onEnd (/home/jan/Desktop/linkbox_beta2_github/code/experiments/node_modules/raw-body/index.js:273:7)
<br> at IncomingMessage.emit (events.js:182:13)
<br> at endReadableNT (_stream_readable.js:1091:14)
<br> at process._tickCallback (internal/process/next_tick.js:174:19)
</pre>
</body>
</html>
我不想让用户看到这个。我该如何隐藏它?将接受更改我的服务器代码的答案,以便我不再看到它。谢谢!
【问题讨论】:
-
向我们展示您使用
JSON.parse的代码部分 -
查看expressexpressjs.com/en/guide/error-handling.html的默认错误处理程序
-
您考虑过使用
process.env变量吗?
标签: javascript node.js json express