Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Javascript express can';投递后我无法得到_Javascript_Node.js_Express_Vue.js - Fatal编程技术网

Javascript express can';投递后我无法得到

Javascript express can';投递后我无法得到,javascript,node.js,express,vue.js,Javascript,Node.js,Express,Vue.js,我正在用Vue.js、Express和MongoDB编写一个web应用程序。Express server有两条Vue客户端将使用的路由:POST:/POST;获取:/post;第一个是发布帖子,另一个是获取帖子 当我发布帖子时(客户请求帖子/帖子);帖子发布成功,然后客户端转到第一页获取帖子(client beg get/post),但是服务器错误:“发送后无法设置标题”,我必须重新启动服务器,然后一切正常,刚才发布的帖子显示正常 我试了很多,但我解决不了,我需要你的帮助 express的/po

我正在用Vue.js、Express和MongoDB编写一个web应用程序。Express server有两条Vue客户端将使用的路由:POST:/POST;获取:/post;第一个是发布帖子,另一个是获取帖子

当我发布帖子时(客户请求帖子/帖子);帖子发布成功,然后客户端转到第一页获取帖子(client beg get/post),但是服务器错误:“发送后无法设置标题”,我必须重新启动服务器,然后一切正常,刚才发布的帖子显示正常

我试了很多,但我解决不了,我需要你的帮助

express的/post路由器:

var express = require('express');
var router = express.Router();
var Post = require('../models/post');
var moment = require('moment');
var jwt = require("jwt-simple");

router.get('/',function(req,res,next){
    Post.get(function(err,posts){
        if(err){
           res.status(404);
           res.end();
        }
    res.status(200);
    res.json({
        posts:posts
    });
  });
});
  router.post('/',function(req,res,next){
      var token = req.body.access_token;
      if(token){
      try{
        var decoded = jwt.decode(token,req.app.get('jwtTokenSecret'));
        if(decoded.exp < Date.now()){
            console.log("haha")
            res.end('token expired',401);
        }
        //console.log(decoded)
         var newPost = new Post({
            name:decoded.iss,
            title:req.body.title,
            content:req.body.content
        });
        console.log(newPost);
        newPost.save(function(err,post){
            if(err){
                console.log("publish failed");
                res.status(500);
                res.send({error:1});
            }
            console.log('publish done');
        });
        res.status(200);
        res.send({});
    } catch(err){
        res.status(401);
        res.send('no token');
    }
 }
});
module.exports = router;
var express=require('express');
var router=express.router();
var Post=require('../models/Post');
var力矩=要求的(‘力矩’);
var jwt=要求(“jwt简单”);
router.get('/',函数(req,res,next){
get(函数(err,posts){
如果(错误){
物质状态(404);
res.end();
}
物质状态(200);
res.json({
职位:职位
});
});
});
router.post('/',函数(req,res,next){
var token=req.body.access\u token;
如果(令牌){
试一试{
var decoded=jwt.decode(token,req.app.get('jwtTokenSecret'));
if(decoded.exp
更改路线

router.get('/',function(req,res,next){
    Post.get(function(err,posts){
        if(err){
           res.status(404);
           res.end();
        } else {
           res.status(200);
           res.json({
                posts:posts
           });
        }
    });
});

router.post('/', function(req, res, next) {
    var token = req.body.access_token;
    if (token) {
        var decoded = jwt.decode(token, req.app.get('jwtTokenSecret'));
        if (decoded.exp < Date.now()) {
            console.log("haha")
            res.end('token expired', 401);
        } else {
            var newPost = new Post({
                name: decoded.iss,
                title: req.body.title,
                content: req.body.content
            });

            newPost.save(function(err, post) {
                if (err) {
                    console.log("publish failed");
                    res.status(500);
                    res.send({error: 1});
                } else {
                    res.status(200);
                    res.send({});
                }
            });
        }
    } else {
        res.status(401);
        res.send('no token');
    }
});
module.exports = router;
router.get('/',函数(req,res,next){
get(函数(err,posts){
如果(错误){
物质状态(404);
res.end();
}否则{
物质状态(200);
res.json({
职位:职位
});
}
});
});
router.post('/',函数(req,res,next){
var token=req.body.access\u token;
如果(令牌){
var decoded=jwt.decode(token,req.app.get('jwtTokenSecret'));
if(decoded.exp

或者在error子句中返回,否则它将尝试设置
状态
头两次,这是生成输出后的最后一次。

似乎是一个逻辑缺陷,您正在执行
res.send({})
不管在
newPost.save()
函数中发生了什么,但是如果失败,您将尝试再次设置
状态
头,但是您不能,因为头已经发送,并且您已经开始在异步
save()
函数外部输出。我只是将其修改为res.end(),但是相同的错误newPost.save()运行良好,GET'/post'时出错。
GET
路由也会执行相同的操作,如果出错,它会尝试设置两次
状态
头。现在我发现错误来自post.GET();但我不知道为什么,因为它在我重新启动服务器时工作。你能看一下我在github上的代码吗,地址是:github.com/laoqiren/vue-express-forum谢谢,现在我发现错误来自Post.get();但我不知道为什么,因为它在我重新启动服务器时工作。你能看一下我在github上的代码吗?地址是:谢谢,在帖子成功发布后,服务器试图打开mongodb时似乎出现了错误,但是GET'/post'没有捕捉到它。你的
/post
路线也有同样的问题,多次
send
,然后尝试设置标题。我将发布这两个路由已修复。我已经像上面的代码一样修改了它们,但是post.get()运行错误。mongodb在进入GET'/post'时无法打开,但当我重新启动服务器时,GET'post'运行良好