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 的位置写错了么?
请教应该怎么写?
出现好几天了,我试了很多方法,求一语道破。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题解决了!
这个插件抽风,换成bodyparser来解析就没问题了,谢谢各位了。
apiRouter里,get方法里多了个return,把这个return去掉
`
return res.json({
})`
错误在这:
一个请求只能有一次响应,res不能执行两次,这是我踩过的坑,希望能帮助你
首先你抛出的这个异常是指在你
向客户端返回response之后,又设置header的错误。这个设置一般发生在http相关的模块。你上面的代码没有一行是关于设置response header的。然后你说时有时无的错误是哪个错误?标题里面的吗?
你访问的请求又是哪一个?
提醒一下。res.json()实际行是调用的res.send(),而,res.send()是依赖于res.end()的,所以res.json()下面的代码是不执行的。
可以参考express官方文档:http://www.expressjs.com.cn/4...