Node.js 似乎无法识别错误的位置

Node.js 似乎无法识别错误的位置,node.js,json,angular,mongodb,express,Node.js,Json,Angular,Mongodb,Express,我一直在开发一个mean stack应用程序,在它突然出现之前一切都很好 JSON中位置23处的SyntaxError:Unexpected token} 在JSON.parse()处 解析时(C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\body parser\lib\types\json.js:89:19) 在C:\Users\Mushood Hanif\Documents\Work\Task Ma

我一直在开发一个mean stack应用程序,在它突然出现之前一切都很好

JSON中位置23处的
SyntaxError:Unexpected token}
在JSON.parse()处
解析时(C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\body parser\lib\types\json.js:89:19)
在C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\body parser\lib\read.js:121:18
在invokeCallback(C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\raw body\index.js:224:16)
完成时(C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\raw body\index.js:213:7)
在IncomingMessage.onEnd(C:\Users\Mushood Hanif\Documents\Work\Task Manager\api\node\u modules\raw body\index.js:273:7)
在IncomingMessage.emit(events.js:333:22)
在endReadableNT(_stream_readable.js:1220:12)
在处理和拒绝时(内部/process/task_queues.js:84:21)
这是api代码:

const express=require('express');
常量app=express();
const{mongoose}=require('./db/mongoose');
//mongoose模型中的负载
const{list,task}=require('./db/models');
//负载中间件
使用(express.json());
//CORS报头中间件
应用程序使用(功能(请求、恢复、下一步){
res.header(“访问控制允许原点”、“*”);
res.header(“访问控制允许方法”、“获取、发布、HEAD、选项、放置、修补、删除”);
res.header(“访问控制允许头”、“来源、X请求的使用、内容类型、接受、X访问令牌、X刷新令牌、_id”);
res.header(
“访问控制公开标头”,
“x-access-token,x-refresh-token”
);
next();
});
//路由处理程序
//列出路线
/**
*获取/列出
*目的:获取所有列表
*/
app.get('/lists',(req,res)=>{
查找({})。然后((列表)=>{
res.send(列表);
})
})
/**
*张贴/列表
*目的:创建一个列表
*/
app.post('/lists',(请求、回复)=>{
设title=req.body.title;
让newList=newList({
标题
});
newList.save().then((listDoc)=>{
res.send(listDoc);
})
});
/**
*修补程序/列表/:id
*目的:更新列表
*/
app.patch('/lists/:id',(req,res)=>{
list.findOneAndUpdate({u id:req.params.id}{
$set:req.body
}).然后(()=>{
res.sendStatus(200);
})
});
/**
*删除/列表/:id
*目的:删除列表
*/
app.delete('/lists/:id',(req,res)=>{
findbyiandremove({u id:req.params.id})。然后((removedListDoc)=>{
res.send(removedListDoc);
})
});
//任务路线
/**
*GET/lists/:listId/tasks
*目的:获取特定列表中的所有任务
*/
app.get('/lists/:listId/tasks',(req,res)=>{
task.find({
_listId:req.params.listId
})。然后((任务)=>{
res.send(任务);
})
});
/**
*GET/lists/:listId/tasks/:taskId
*目的:从特定列表中获取一项任务
*/
app.get('/lists/:listId/tasks/:taskId',(req,res)=>{
task.findOne({
_taskId:req.params.taskId,
_listId:req.params.listId
}).然后((任务)=>{
res.send(任务);
})
});
/**
*POST/lists/:listId/tasks
*目的:在指定列表中创建新任务
*/
app.post('/lists/:listId/tasks',(req,res)=>{
让newTask=新任务({
标题:req.body.title,
_listId:req.params.listId
});
newTask.save().then((newTaskDoc)=>{
res.send(newTaskDoc);
})
});
/**
*修补程序/列表/:listId/tasks/:taskId
*目的:从现有列表更新任务
*/
app.patch('/lists/:listId/tasks/:taskId',(req,res)=>{
task.findOneAndUpdate({
_id:req.params.taskId,
_listId:req.params.listId
}, {
$set:req.body
}).然后(()=>{
res.sendStatus(200);
})
});
/**
*删除/lists/:listId/tasks/:taskId
*目的:从现有列表中删除任务
*/
app.delete('/lists/:listId/tasks/:taskId',(req,res)=>{
task.findOneAndRemove({
_id:req.params.taskId,
_listId:req.params.listId
}).然后((removedTaskDoc)=>{
res.sendStatus(removedTaskDoc);
})
});
app.listen(3000,()=>{
log(“在端口3000侦听的服务器”)

})
我发现了问题所在。补丁方法必须返回一个json对象,但我返回的是一个状态码。将api中的代码调整为以下内容:

/**
*修补程序/列表/:listId/tasks/:taskId
*目的:从现有列表更新任务
*/
app.patch('/lists/:listId/tasks/:taskId',(req,res)=>{
task.findOneAndUpdate({
_id:req.params.taskId,
_listId:req.params.listId
}, {
$set:req.body
}).然后(()=>{
res.send({消息:“任务已成功更新”});
})

});没有密码就说不出来。错误的最终原因是,某些内容在无效时被解析为JSON,但无法仅从stacktrace中说出原因。@VLAZ让我在question@VLAZ现在请检查问题