
nodejs
zhoudado921
这个作者很懒,什么都没留下…
展开
-
Nodo Spawn启动子程序端口一致时,父程序被干掉
问题在使用nodejs写一个应用(父应用)的时候,此项目需要管理一些子应用,类似pm2的作用;就是使用的childProcess的spawn来启动;但是发现,如果在windows环境下,创建的一个子应用是非node应用并且子应用端口与父应用的端口一致,就会出现父应用程序被干掉,而子应用被成功启动;排查问题1.Windows环境下(1)测试子应用是node的情况下,发现不会被挤掉,启动的子应用会报端口被监听的错误(符合要求)(2)测试子应用非node的情况下,比如go语言或者c写的可执行文件,发现原创 2021-03-23 10:19:52 · 304 阅读 · 0 评论 -
express解析的req.body为{}
问题来源语言:nodejs框架:express需求:对接视频结构化设备(此服务会推送捕捉到的人像或者车辆等信息)开发:使用express快速搭建一个新项目问题:对接时,视频结构化设备推送的信息,打印出来的req.body是{}空对象。但是我使用postman调用的时候,是可以打印出来body对象的。实现:以下我将按照我的思路来重构一下问题和找问题的思路。开发使用express快速搭建新项目1.npm i express -g2.npm i express-generater -g3.e原创 2020-11-20 15:41:30 · 2939 阅读 · 8 评论 -
nodejs的定时任务模块(node-schedule)
node-schedule模块介绍定时触发某个任务,去完成类似导出数据,定时发送消息等.安装npm i node-scheduleCron风格定时器var schedule = require('node-schedule');function scheduleCronstyle(){ schedule.scheduleJob('30 * * * * *', function(){ console.log('scheduleCronstyle:' + new Date原创 2020-11-20 14:19:29 · 2678 阅读 · 0 评论 -
nodejs使用protobufjs
1、使用前提nodejs会发送mqtt消息,但是消息体要进行压缩,未使用json或者XML,我们使用protobufjs来压缩数据。2、使用步骤(1)安装protobufjsnpm install -g protobufjs (2)创建protp/config.proto文件syntax = "proto3";message Config{ int32 param=1; string req_id=2;}(3)使用命令,将config.proto转换成js文件cd pr原创 2020-08-11 17:05:13 · 1783 阅读 · 0 评论 -
node的单元测试
单元测试,测试某个部分时,可以把别的部分mock掉,比如A函数里调用了B函数,要测A,就把B mock掉,测得时候只是测B是否被正常调用了有的时候mock的时候,需要新建mock类,比如ws和db等,因为有连接导致测试停不掉,方便起见建立了mock文件不单独写个文件的话jest.mock('../src/wsServer', () => ({ wsServer: { clients: [] } }));这样也行。...原创 2020-05-19 11:24:01 · 196 阅读 · 0 评论 -
nodejs需要websocket绑定到http(https)
前景:我们在创建一个项目的时候,刚开始websocket的server端的端口和http的端口是分开的,但是在部署的时候,只能使用同一个端口,所以就需要将websocket端口绑定在httpServerwebsocket是http升级而来的,可以和httpServer共用一个端口,那么代码中如何实现呢?npm的ws已经有此处代码:https://www.npmjs.com/package/ws大体就是在创建websocket的时候,使用的是http来创建,然后启动server.listen(port原创 2020-05-19 11:13:40 · 2514 阅读 · 1 评论 -
nodejs中forEach和普通循环区别
问题描述:最近在写代码中发现在forEach循环中,使用await函数跟正常的循环有区别,所以进行记录。一般我们都将forEach叫做增强for循环,确实较少了部分代码量,但是当内部使用await的时候需要注意,下面我写了两个例子。1、如果在循环中不使用await这个promise,区别不大2、forEach和普通循环中执行await函数情况(1)forEach[1,2,3].forEach(function hehe),先执行hehe(1),假如hehe里面有异步,就不会等它执行完,继续执行h原创 2020-05-19 10:07:18 · 2449 阅读 · 0 评论 -
Nodejs快速搭建项目_区分生产和测试环境
问题:测试环境和生产环境不是同样的数据库或者配置不一样,那么上线的时候总不能改代码吧?那么如果实现一件部署呢?实现:那么我就来快速搭建并且测试一下,步骤如下。1、你已经成功安装了node。2、快速搭建一个项目:使用express的应用程序生成器npx express-generator。具体实现如下:https://www.expressjs.com.cn/en/starter/gener...原创 2020-04-29 10:46:01 · 1764 阅读 · 1 评论 -
Nodejs使用Oauth2协议实现第三方登录GitLab
简述目前有一个功能需要将自己创建的登录注册功能的httpserver使用GitLab来登录自己的系统,而不需要每次登录HttpServer系统都要重新注册一个用户。(注意:是GitLab而不是GitHub哦)Oauth2原理部分原理部分,我在找文档的时候发现一篇挺好,讲解清楚,在此粘贴:https://www.cnblogs.com/wudimanong/p/10821215.htmlN...原创 2020-04-10 16:33:19 · 2196 阅读 · 0 评论 -
Nodejs模块化开发
前言对nodejs入门之后,我们经常会发现,代码中经常会出现require(’’)这样的代码,nodejs菜鸟教程的创建的第一个应用就使用到了require指令来载入http模块,并将实例化的http赋值给变量http。那么所谓的模块又是什么?今天将从require开始,进入模块的世界require(’’)方法require()是接收模块标识符参数,然后node根据一定的规则引入该模块之后,...原创 2020-04-03 15:03:49 · 233 阅读 · 0 评论 -
express中间件
简述Express项目底层就是由许多中间件在协同工作,简单来说,一个express应用就是在调用各种中间件。中间件描述中间件简单来说是功能的封装,就是封装在程序中处理http请求的功能,最终为路由提供服务。更简单来说,理解为拦截器中间件有一个next()函数,如果不调用next函数,请求就在这个中间件终止功能:执行任何代码修改请求和响应对象终结请求-响应循环:可以在处理请求之后,...原创 2020-04-01 17:38:29 · 252 阅读 · 0 评论 -
Nodejs入门思想
以下是讲解nodejs的方向列表一、Nodejs特点二、Nodejs模块化三、Nodejs异步回调四、Nodejs爬虫五、Nodejs中间件一、Nodejs特点Node是单线程_不需要为每一个客户端连接创建新线程,当有用户连接了,就触发一个内部时间,通过非阻塞IO,让Nodejs程序宏观上并行非阻塞I/O:Nodejs通过回调函数(Callback)和异步机制异步、事件驱动模型...原创 2020-04-01 14:57:40 · 218 阅读 · 0 评论