美文网首页
node.js初次尝试之问题总结

node.js初次尝试之问题总结

作者: fangcaiwen | 来源:发表于2018-09-29 13:51 被阅读0次

1.Port 3000 is already in use

当我们使用node.js开发后端,在调试的时候遇到 Port 3000 is already in use,怎么办呢?别急,两条命令解决:

MBP:~ lianwyu02$ lsof -i tcp:3000
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    1234 lianwyu02   29u  IPv6 0xf8ad63009a97fd73      0t0  TCP *:hbci (LISTEN)
MBP:~ lianyu02$ kill -9 1234

分别是找到对应的端口号占用的进程,然后把他杀掉就可以了。

'use strict'
var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resourcewww');
});

router.get('/list', function(req, res, next) {
    console.log("req",req);
    console.log("res",res);
    res.send({name:"张三2221",age:25});
});

router.post('/detail',function (req,res,next) {
    console.log("req",req);
    console.log("res",res);
    res.send({id:req.body.id,name:req.body.name,age:req.body.age});
});
 

module.exports = router;

如上图代码,当我们使用get测试的时候,发现一点问题都没有,然后试试post来写接口,发现根本调用不了,后来百度,发现原来要引入bodyParser,于是我们在终端安装body-parser

npm install body-parser

然后到app.js里面

···
// 引入json解析中间件
var bodyParser = require('body-parser');
···
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

然后兴高采烈的跑到postman去继续调试自己写的接口,采用调试模式,发现

console.log("req",req);//这里的req.body依然为空

这是为什么呢?看下图


postman图jpeg

后来发现原来选择的是1处,点击选择2处,去调用,发现req.body拿到传过去的数据了,万分开心,但是我们要使用1处也支持呢?怎么办?于是百度总结了下我们需要multer这个神器中间件。
继续安装

npm install multer@0.1.8//我使用的是这个版本

在app.js里面继续引入

···
var multer = require(‘multer’);
···
app.use(multer());//使用这个中间件

再次回到postman,调用,选择第一个,完美解决问题。
总结:常用四种格式的post数据,分别为:

www-form-urlencoded,
form-data,
application/json,
text/xml

下图介绍前三种。node.js的中间件,至于这四种详细的解释,请大家自行百度学习

var express         = require(‘express’);
var bodyParser      = require(‘body-parser’);
var multer          = require(‘multer’);
var app             = express();

//for parsing application/json
app.use(bodyParser.json());

//for parsing application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

//for parsing multipart/form-data //需要用npm install multer@0.1.8
app.use(multer());

相关文章

  • node.js初次尝试之问题总结

    1.Port 3000 is already in use 当我们使用node.js开发后端,在调试的时候遇到 ...

  • React Native

    初次尝试React Native,之前使用过Node.js,但不是通过brew安装的,所以要先全部删掉重新通过 b...

  • 初次尝试

    受到研究员的启发,朋友圈的引导,第一次尝试写简书,希望能坚持下去,别再长草了!

  • 初次尝试

    器材:魅蓝3S 后期:Snapseed、MIX、Retouch、VSCO 艺考生一枚,还请前辈们指点!

  • 初次尝试

    the words of hand

  • 初次尝试

    下午,像日常一样—刷着朋友圈、打着宅系游戏。但下一秒我始终没有想到,我会穿越,虽然我憧憬过、期待过,但这么草率地穿...

  • 初次尝试

    手痒尝试画一下,感觉还挺累。继续…

  • 初次尝试

    有点纠结 一直以来,都想写点东西的,真的,可不知从何说起,身边的东西太多,繁复又零碎,分不清个主次,整不出个顺序,...

  • 初次尝试

    何为所见即所得

  • 初次尝试

    新的记载用具,用一下哈。

网友评论

      本文标题:node.js初次尝试之问题总结

      本文链接:https://www.haomeiwen.com/subject/eknvoftx.html