javascript - 在 Express POST 中隐藏 JSON 解析错误
问题描述
我有这个小型 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>
我不想让用户看到这个。我该如何隐藏它?将接受更改我的服务器代码的答案,以便我不再看到它。谢谢!
解决方案
感谢 Ariel Alvarado 的评论(= 使用默认错误处理程序),我可以回答我自己的问题:
var express = require("express");
var app = express();
app.use(express.json());
// added this error handler
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});
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");
});
推荐阅读
- java - 想要创建 if 语句,然后是几个 else-if 语句,最后是一个“捕获所有”else 语句
- axapta - 表:ACCOUNTINGDISTRIBUTION 的 RecId 生成尚未暂停。在保留 RecId 之前暂停 RecId 生成。斧头 2012 R2
- bash - 我如何按字母顺序遍历文件夹到某些文件夹
- reactjs - 在 Redux-Form 中编辑和提交后如何更新我的 initialValues?
- python - 在pygame中写入文本时出现奇怪的矩形
- python-requests - 通过 Fiddler 和 NTLM 身份验证使用 Python 请求库不一致成功
- html - HTML5 数据属性中的关键信息
- api - Office JavaScript API 和 Power Point
- c# - WPF ShowDialog 与另一个窗口活动
- c# - 实体框架,ASP.NET,缺少上下文