发表后不能得到快递

我正在用Vue.js和Express和MongoDB编写一个Web应用程序。 Express服务器有两个Vue客户端将使用的路由:POST:/ post; GET:/ post; 第一个是发布post,另外一个是发post;

当我发布一个post(客户端请求POST / post); 这个post发布成功,然后客户端去第一页获取post(客户端请求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; 

改变你的路线

 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; 

或者在错误子句中返回,否则会尝试将status头设置两次,即最后一次生成输出后。