express router bodyParse 问题求助
发布于 6 年前 作者 Marcustar 2827 次浏览 来自 问答

各位大佬好,请教: 想把路由单独写在一个文件(routes.js)里, 然后axios 模拟 post 数据, 问题是: 1,调用单独路由文件中间件, 就收不到 post 过来的 json 数据。 2, 但是 直接用 app.post(…) 写在app.js 就可以看到。 我的看到是指 console.log(req.body ) 的输出,如下: 图片.png 不期望的情况: 调用app.use(router),console.log(req.body ) 的输出,如下: 图片.png 我觉的问题就是用app.use(router),时 ,app.js 里面的 bodyParse 没有传过去, 新手, 非科班,都是自学的,也没人交流,还请指正。 下面的代码: ==========app.js: ============= 图片.png =========router/routes.js========= 图片.png =======模拟发送数据===== 图片.png

8 回复

给你一个我写的样子 server.js

var http = require('http');
var express = require('express');

var main = express();
var server = http.createServer(main);

require('./router.js')(main);

server.listen(9188)
{
console.log('server is start, listen on port.. 9188');
};

router.js

var body = require('body-parser');

module.exports = function router(router) 
{
    router.get('/', Index);
    router.post('/list', List);
}

var Index = (req, res) =>
{
    req.body.whatYourRequir;
	res.send(whatYouWant);
    res.end();
}

谢谢 , 楼上的解决办法。 app.use(router) 收不到解析好的数据,问题原因还是没有找到。 我把图片.png 的代码即便挪到 app.js 里面 还是不能正常收到 解析后的数据。 暂时还没找到问题出在哪里,还请前辈指点。

console.dir(req.body) 看看里面是啥?

图片.png 一样的 [object , Object]

我把代码又精简了下, 有用过的,还请指点。 图片.png

哎 , 终于找到原因了! 。 问题出在这一行, req.body 被 这个 字符串 “ + ” 号, 转换对象了。

 console.log("this is from " + req.body);

console.log(req.body) ; 输出就是正常的。

回到顶部