javascript - 求助,难了我好几天了。 Can't set headers after they are sent.

查看:94
本文介绍了javascript - 求助,难了我好几天了。 Can't set headers after they are sent.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

app.js

var express = require('express');
var path = require('path');
var config = require("./config");// 处理配置文件
var session = require("express-session");// 处理session cookie
var MongoStore = require('connect-mongo')(session);// 将session存到mongoDB
var formidable = require("express-formidable");// 解析提交内容
var postRoutes = require("./router/postRoutes");
var apiRoutes = require("./router/apiRoutes");

var app = express();

app.set(express.static(path.join(__dirname,"/public")));
app.set("views",path.join(__dirname,"/public"));
app.set("view engine","ejs");
// 中间件session
app.use(session({
    name:config.session.key,
    secret:config.session.secret,
    cookie:{
        maxAge:config.session.maxAge
    },
    store:new MongoStore({
        url:config.mongodb
    })
}));

// 中间件formidable解析form提交
app.use(formidable({
    uploadDir:path.join(__dirname,"public/avatar"),// 头像路径
    keepExtensions:true// 保留后缀
}));

app.use("/post",postRoutes);
app.use('/api',apiRoutes);


app.listen(3000,function(){
    console.log("listen on port 3000 ******************");
})

postRouter

var express = require('express');
var path = require("path");
var sha1 = require('sha1');
var postModel = require('../model/db').postModel;
var groupModel = require('../model/db').groupModel;
var moment = require('moment');
var marked = require('marked');

var postRoutes = express.Router();
var Err = 0;
var OK = 1;
// 主页
postRoutes.get('/posts',function(req,res){
    postModel.find({},function(err,posts){
        if (err) {
            res.json({'style':Err});
            return;
        }
        res.json({'style':OK,"posts":posts});
        console.log('/posts');
        // return;
    });
});

apiRouter

var express = require('express');
var userModel = require('../model/db').userModel;
var groupModel = require('../model/db').groupModel;
var apiRoutes = express.Router();

const Err = 0;
const OK = 1;

apiRoutes.get('/userInfo',function(req,res){
    userModel.findOne({name:'哈哈'},function(err,user){

        res.json({
            'style': OK,
            'user':user
        })
        console.log('/userInfo');
    })
});

module.exports = apiRoutes;

不是永远报错,是有时会报这个错误。我删的就剩这两个了,还是会报错;
错误的意思我知道,return 的位置写错了么?
请教应该怎么写?
出现好几天了,我试了很多方法,求一语道破。

解决方案

问题解决了!

var formidable = require("express-formidable");// 解析提交内容

这个插件抽风,换成bodyparser来解析就没问题了,谢谢各位了。

这篇关于javascript - 求助,难了我好几天了。 Can't set headers after they are sent.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆