node
文章平均质量分 67
node 学习比较和一些问题,案例
twinkle||cll
More interest,less interests (多一些兴趣爱好的向往,少一些功名利禄的追求)
展开
-
read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:209:20) { errno: -4077
本人在使用 node + koa来实现gitup的授权登录,但是在第二步获取access_token的时候报下面的错误了。关于gitup如何授权登录,有兴趣的同学可以百度一下,获取访问官网的api地址 https://docs.github.com/cn/developers/apps/building-oauth-apps/authorizing-oauth-apps#%E5%93%8D%E5%BA%94,这里面讲的很详细,本人就不在赘述了,要说的是在获取access_token时候遇到的问题,在这里看.原创 2021-06-22 17:34:47 · 12030 阅读 · 0 评论 -
koa 搭建一个后台,实现crud, swagger,loger记录等
突然发现自己在一段时间都没有写博客了,最近杂七杂八的事情比较多。一直搞个不停,最近在写个人博客后台,决定使用koa,然后自己肯定需要先搭建一个小demo方便代码的实现。效果这么些api接口,然后把swagger也给加上,方便测试和维护api的文档,这也是后端一直需要做的事情,作为前端工程师,咋们虽然写后台代码不多,但是需要知道人家的工作内容是咋样的,参数怎么传递的,这样有利于联调。源码地址https://github.com/cll123456/my-blog-serve.git项目搭建.原创 2021-06-16 15:42:58 · 549 阅读 · 0 评论 -
koa 中间件
koa 是一个轻量级(对比express 区别请查看我上一篇文章)web 服务的框架,里面没有自带的中间件,因此我们需要来自己实现中间件或者使用第三方人家开发好的中间件。在写一个服务端应用的时候,一般都会使用到作为静态服务器,node 搭建静态服务请查看我以前文章,express中间件实现静态资源服务的话可以使用 express.static()来实现,那么koa如何实现呢? 其实对于一个静态服务的话,只要你会node这个底层的原理,express 或者 koa 这些上层应用都是基于底层原理来的.原创 2021-06-04 17:34:37 · 1038 阅读 · 0 评论 -
express VS koa
express 和 koa 都是同一个团队弄出来的web 框架,分版本的目的是为了向 es6的标准靠齐。接下来我们就来聊聊这同一个团队因为什么样的事情,要重新做一个 koa 出来express 出来的时候,js 还是处于混沌期间,es6的标准没有出来。而node的事件处理的方式都是基于 cb(callback) 的这种形式,在当时来看,这种方式是比较好的一种方式。所以express 里面的中间件处理的方式基本上都是回调。es6 的出现,带来了许多新的标准。使得express 不得不考虑需要兼容e.原创 2021-06-02 23:03:48 · 1759 阅读 · 0 评论 -
node express前端 canvas操作图片 报跨域
Access to image at 'http://localhost:9011/upload/pressImg/1611030791331-b1y3ei.png' from origin 'http://192.168.0.102:3002' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource原创 2021-01-19 12:58:14 · 321 阅读 · 0 评论 -
了解进程,线程之间的关系
进程一个应用程序,总是通过操作系统启动的,当操作系统启动一个应用程序时,会给其分配一个进程一个进程拥有独立的、可伸缩的内存空间,原则上不受其他进程干扰进程之间是可以通信的,只要两个进程双方遵守一定的协议,比如ipcCPU在不同的进程之间切换执行虽然一个应用程序在启动时只有一个进程,但它在运行的过程中,可以开启新的进程,进程之间仍然保持相对独立如果一个进程是直接由操作系统开启,则它叫做主进程如果一个进程B是由进程A开启,则A是B的父进程,B是A的子进程,子进程会继承父进程的一些信息,但仍然保持相原创 2021-01-07 09:36:56 · 223 阅读 · 0 评论 -
websocket 的实现原理 使用node搭建长连接
序言浏览器实现长连接在过去到现在,浏览器需要实现长连接有以下几种方式:第一种是基于http协议来可以有两种方式:1.在客户端使用轮询的方式,缺点是:增加不必要的http请求,浪费服务器的带宽2.HTTP/1.0通过Connection:Keep-alive来实现长连接。HTTP/1.1为了尽可能的提高HTTP性能,1.1规定所有连接必须是持久的,已经不需要在头部加上Connection:Keep-alive了。想要短连接可以,Connection:close 但一般没人会主动去使用。仔细观察原创 2021-01-06 18:15:30 · 883 阅读 · 0 评论 -
node判断文件夹是否存在,不存在直接创建
node判断文件夹是否存在,不存在直接创建代码异步写法// 传入文件夹的路径看是否存在,存在不用管,不存在则直接创建文件夹/** * 判断文件夹是否存在,不存在可以直接创建 * @param reaPath {String} 文件路径 * @returns {Promise<boolean>} */exports.exitsFolder = async function (reaPath) { const absPath = path.resolve(__dirname原创 2021-01-06 09:16:12 · 5831 阅读 · 0 评论 -
node生成验证码
node生成验证码前言:使用第三方库 npm install --save svg-captchasvg验证码效果1:效果2:代码const express = require('express');const router = express.Router();const svgCaptcha = require('svg-captcha');// 直接是字母的router.get('/', (req, res, next) => { const captcha原创 2020-12-31 14:48:39 · 1126 阅读 · 0 评论 -
node生成带logo的二维码的中间件
node生成带logo的二维码使用的包:npm install --save qrcode 生成二维码npm install sharp 合并图片或者使用 npm install --save jimp 合并图片上效果代码实现const express = require('express');const router = express.Router();const QRCode = require('qrcode');const fs = require('fs')c原创 2020-12-31 10:31:48 · 1444 阅读 · 2 评论 -
node express 给前端返回图片流
node 给前端返回图片流先看效果实现方式方式一:直接使用fs异步读取文件原创 2020-12-30 09:01:58 · 6849 阅读 · 2 评论 -
node实现代理的中间件
node实现代理的中间件方法一:手动实现中间件// api 请求的代理// 如果是以 /data/api/xxx 需要去代理到其他的服务器中const http = require('http');const context = '/data';module.exports = (req, res, next) => { // 如果传入的请求路径中,包含 context 那么就走代理,反之,不需要使用代理 let url = req.path; if (url.原创 2020-12-28 22:52:57 · 970 阅读 · 0 评论 -
node 图片制作防盗链中间件
node 图片制作防盗链中间件我们可以在自己的网站上挂外链,就是别人的图片连接,这样对于自己的网站来说,节约不少的成本,但是对于提供方的来说,确实一笔带宽不小的消耗。,如果避免这个问题呢?上代码// 图片防盗链处理的中间件const url = require('url');const path = require('path');module.exports = (req, res, next) => { // 判断后缀名是否为一个图片,如果不是图片,直接放行 co原创 2020-12-28 15:29:40 · 276 阅读 · 0 评论 -
node 实现文件下载,web打开迅雷下载文件
node实现文件下载const express = require('express');const router = express.Router();const fs = require('fs');const path = require('path');const {errorMsg} = require("../../util/apiUtils");router.get('/:fileName', async (req, res) => { const filePat原创 2020-12-26 16:31:01 · 670 阅读 · 0 评论 -
node 实现文件上传中间件
node js 实现文件上传实现了一个文件上传的中间件,重点引用了一个文件上传的库,multer传送门const express = require('express');const router = express.Router();const path = require('path');const multer = require('multer');exports.successMsg = function (msg, datas) { return {原创 2020-12-26 15:30:01 · 277 阅读 · 0 评论 -
JWT原理详解
随着前后端分离的发展,以及数据中心的建立,越来越多的公司会创建一个中心服务器,服务于各种产品线。而这些产品线上的产品,它们可能有着各种终端设备,包括但不仅限于浏览器、桌面应用、移动端应用、平板应用、甚至智能家居实际上,不同的产品线通常有自己的服务器,产品内部的数据一般和自己的服务器交互。但中心服务器仍然有必要存在,因为同一家公司的产品总是会存在共享的数据,比如用户数据这些设备与中心服务器之间会进行http通信一般来说,中心服务器至少承担着认证和授权的功能,例如登录:各种设备发送消息到中心服务原创 2020-12-24 08:34:41 · 2857 阅读 · 2 评论 -
跨域问题的解决方案 jsonp cros原理
跨域问题的解决方案有常用的两种:1.jsonp2.crosJSONP并不是一个好的跨域解决方案,它至少有着下面两个严重问题:会打乱服务器的消息格式:JSONP要求服务器响应一段JS代码,但在非跨域的情况下,服务器又需要响应一个正常的JSON格式只能完成GET请求:JSONP的原理会要求浏览器端生成一个script元素,而script元素发出的请求只能是get请求jsonp 的代码实现:客户端代码实现:function jsonp(url) { const scr = docu.原创 2020-12-22 10:33:57 · 275 阅读 · 1 评论 -
node 实现aes-128-cbc对称加密
刚刚接触node的crypto模块,发现水好深好深。下面是使用node中的 crypto 的aes-128-cbc进行对称加密,// 用于加密和解密// 手动实现对称加密, 使用node 的 crypto库,并且使用里面的 aes-128cbc的模式进行加密const crypto = require('crypto');// 创建一个密钥 Math.random().toString(32).slice(-8) + Math.random().toString(32).slice(-8)c.原创 2020-12-21 17:29:49 · 1303 阅读 · 0 评论 -
cookie的由来,组成,以及原理
cookie的由来假设服务器有一个接口,通过请求这个接口,可以添加一个管理员但是,不是任何人都有权力做这种操作的那么服务器如何知道请求接口的人是有权力的呢?答案是:只有登录过的管理员才能做这种操作可问题是,客户端和服务器的传输使用的是http协议,http协议是无状态的,什么叫无状态,就是服务器不知道这一次请求的人,跟之前登录请求成功的人是不是同一个人由于http协议的无状态,服务器忘记了之前的所有请求,它无法确定这一次请求的客户端,就是之前登录成功的那个客户端。你可以把服务器想象成有着严原创 2020-12-21 09:09:52 · 2209 阅读 · 0 评论 -
node使用 nodemon 来监听文件变化
官网地址知识边界: nodemon 就像是vue里面的开启热加载功能一样,开发者只要放心开发,不用修改一点就需要重新启动项目,进行测试使用方法:安装:npm install nodemon -D添加配置文件 nodemon.json,内容如下:由于nodemon 监听的文件范围是整个node项目,有点广,所以通过配置文件监听我们需要的。{// 需要监听的文件后缀名 "watch": [ "*.js", "*.json" ], // 当前的开发环境 "e原创 2020-12-18 11:08:00 · 2049 阅读 · 0 评论 -
node 基础使用 express
// 基础使用expressconst express = require('express');const http = require('http')// 首先明白express的边界,基于http模块的,处理http请求和响应的作用// 创建一个服务器,方法一// const app = express();// const server =http.createServer(app);// server.listen(3000, () =>{// console.l原创 2020-12-18 10:29:31 · 428 阅读 · 1 评论 -
node Sequelize配置log4js 配置详情
node 配置log4js 配置详情const log4js = require("log4js");const path = require('path');log4js.configure({ // 日志分类 categories:{ sql: { appenders: ['sql'], // 分类出口,配置sql的日志 level: 'all' // 日志级别 }, default:原创 2020-12-17 16:36:37 · 545 阅读 · 0 评论 -
ConnectionRefusedError [SequelizeConnectionRefusedError]: connect ECONNREFUSED 127.0.0.1:3306
sequelize在连接数据库的时候,早上还好的时候,突然就坏了,看报错信息,发现连接拒绝,然后经过自己的排查,发现mysql数据服务竟然被关闭了,虽然关闭原因还未找到,但是解决这个问题的方法就是重新开启mysql服务就好手动去开启服务:问题得到解决,不报错了...原创 2020-12-17 10:07:46 · 3182 阅读 · 2 评论 -
(node:10712) UnhandledPromiseRejectionWarning: #<Object>
在学习node的时候,运行代码突然报下面错误,这个在百度上找了一下,发现描述的有点不正确。这个错误是说不能够处理promise的reject,通俗一点,就是你的promise抛了一个异常出来,但是你调用者没有进行捕获处理,也就是没有写catch()函数来进行捕获。解决办法: 在调用者使用catch()进行错误捕获就好,此时就是正常了...原创 2020-12-16 16:11:01 · 1338 阅读 · 0 评论 -
时间日期格式化 moment库的基本使用
时间格式的使用场景注意:在时间格式的传输过程中, 我们为了能使时间在每一个地区都能准确获取的,一般存入数据库的都是,utf8 或者 是时间戳的形式, 因为时间戳和utf8的是一个标准,不会因为地区而异而改变,如下图:使用方式: npm install moment,不管是浏览器还是nodejs服务端,这个库都可以使用简单使用方法const moment = require('moment');// 修改语言包moment.locale("zh-cn");console.log(m原创 2020-12-15 12:30:17 · 809 阅读 · 0 评论 -
node 手动实现 EventEmitter 特别简单的思路
class MyEvent { constructor() { // 事件的数组 this.funcArray = []; } /** * 绑定事件 * @param funcName 事件名称 * @param cb 回调函数 */ on(funcName, cb) { this.funcArray.push({[funcName]: cb, funcName: funcName, o原创 2020-12-08 10:26:29 · 171 阅读 · 0 评论 -
node初探 什么是node
什么是node node能干什么前言:node是一个使用c/c++为底层来实现,运行在在chrome v8引擎的一个脚本语言,换句话说:Node.js是一门使用V8引擎来解析JavaScript的一个工具具体请看:node 发展史Node.js 的发展历程node 是一个Js的运行环境前言里面说了,node 是一门使用chorme V8 引擎来解析JavaScript, 并且解决异步IO,事件驱动,高性能的一种脚本语言,它的出来就搭上了chrome浏览器开发的v8引擎的这一趟快车。nod原创 2020-12-08 09:33:02 · 1759 阅读 · 0 评论 -
node使用http 模块搭建一个静态服务器
// 使用http模块实现静态资源服务器const http = require('http');const path = require('path');const fs = require('fs');const URL = require('url');// 搭建静态资源服务器,需要自身创建一个服务器const server = http.createServer(async (req, res) => { // 获取地址 const url = req.url;原创 2020-12-05 17:06:23 · 513 阅读 · 0 评论 -
node 复制文件的五种方式
// 方法1 直接使用原生的来(async () => { console.time('方式1') const fileName = path.resolve(__dirname, './fsModule/复制文件1.docx'); const fileCont = await fs.promises.readFile(path.resolve(__dirname, './fsModule/100MB大文件.docx'), 'utf-8'); await fs.pro原创 2020-12-02 21:01:03 · 2933 阅读 · 0 评论