Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点js delete代码生成意外错误_Node.js_Mongodb_Express_Mongoose_Ejs - Fatal编程技术网

Node.js 节点js delete代码生成意外错误

Node.js 节点js delete代码生成意外错误,node.js,mongodb,express,mongoose,ejs,Node.js,Mongodb,Express,Mongoose,Ejs,我试图删除节点项目中的一篇文章,但它抛出了一个错误。即使在那个时候,Delete仍然可以正常工作,但我无法找出产生此错误的原因和位置 我已尝试在控制台中打印步骤。请帮我找出是什么错误 路由器 .delete(cors.corsWithOptions, authenticate.verifyUser, (req, res, next)=>{ Posts.findById(req.params.postId) .then(async (post) => {

我试图删除节点项目中的一篇文章,但它抛出了一个错误。即使在那个时候,Delete仍然可以正常工作,但我无法找出产生此错误的原因和位置

我已尝试在控制台中打印步骤。请帮我找出是什么错误

路由器

.delete(cors.corsWithOptions, authenticate.verifyUser, (req, res, next)=>{
    Posts.findById(req.params.postId)
    .then(async (post) => {
        console.log('Post with id: '+req.params.postId+' found!');
        if(String(req.user._id) === String(post.posted_by)){
            if(post.image){
                fs.unlink('public/uploads/images/'+post.image  , async (err) => {
                    if (err) next(err);
                    console.log('file was deleted');
                });
            }
            post.remove()
            .then((resp) => {
                console.log('Post with id: '+req.params.postId+' removed!');
                // res.statusCode = 200;
                // res.setHeader('Content-Type','text/html');
                res.redirect('/');
            })
            .catch((err) => next(err));
        }
        else{
            var err = new Error('You are not allowed to delete someone else\'s post!');
            err.status = 403;
            next(err);
        }
    }, (err) => next(err))
    .then((err) => next(err));
    
    // Posts.findByIdAndRemove(req.params.postId)
    // .then((resp) => {
    //     res.statusCode = 200;
    //     console.log('Post deleted', resp);
    //     res.setHeader('Content-Type','text/html');
    //     // alert('The post has been deleted!');
    //     res.redirect('/');
    // }, (err) => next(err))
    // .catch((err) => next(err));
});
错误:

Post with id: 5f546a64dd65b83720448305 found!
ClientError [NotFoundError]: Not Found
    at E:\NodeJS Project\app.js:76:8
    at Layer.handle [as handle_request] (E:\NodeJS Project\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (E:\NodeJS Project\node_modules\express\lib\router\index.js:317:13)
    at E:\NodeJS Project\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (E:\NodeJS Project\node_modules\express\lib\router\index.js:335:12)
    at next (E:\NodeJS Project\node_modules\express\lib\router\index.js:275:10)
    at E:\NodeJS Project\node_modules\express\lib\router\index.js:635:15
    at next (E:\NodeJS Project\node_modules\express\lib\router\index.js:260:14)
    at next (E:\NodeJS Project\node_modules\express\lib\router\route.js:127:14)
    at E:\NodeJS Project\routes\postRouter.js:209:20
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
DELETE /post/5f546a64dd65b83720448305/edit?_method=DELETE 404 131.474 ms - 3752
file was deleted
Post with id: undefined removed!
GET /stylesheets/style.css 304 82.387 ms - -
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:518:11)
    at ServerResponse.header (E:\NodeJS Project\node_modules\express\lib\response.js:767:10)
    at ServerResponse.location (E:\NodeJS Project\node_modules\express\lib\response.js:884:15)
    at ServerResponse.redirect (E:\NodeJS Project\node_modules\express\lib\response.js:922:18)
    at E:\NodeJS Project\routes\postRouter.js:199:21
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

我会这样做,它会清除所有的回调混乱

另外请注意,您可能会遇到文件路径问题,您可能需要将
添加到
/public/…

//不需要在路由中
const removeFile=(文件路径)=>{
返回新承诺((解决、拒绝)=>{
试一试{
fs.取消链接(文件路径,(错误)=>{
如果(错误)抛出错误;
log('文件已删除');
解决()
});
}捕捉(错误){
拒绝(错误)
}
})
}
app.delete(cors.corsWithOptions、authenticate.verifyUser、async(req、res、next)=>{
试一试{
const post=wait Posts.findById(req.params.postId)
log(`Post with id:${req.params.postId}找到!`);
if(字符串(请求用户id)!==字符串(发布人)){
var err=new Error('不允许删除其他人的帖子!');
err.status=403;
犯错误;
}
if(post.image)等待删除文件(`public/uploads/images/${post.image}`)
等待发布。删除()
log(`Post with id:${req.params.postId}已删除!`);
res.redirect('/');
}捕捉(错误){
下一个(错误)
}
});