web开发通用代码记录
结合Koa写出流文件/图片到前端/浏览器1npm i fs-extra mime-types axios 读取本地文件写回前端123const localPath = path.join(__dirname, '../..', 'pic/not_found.png');ctx.type = mime.lookup(localPath);ctx.body = fs.readFileSync(localPath); 读取外部链接流文件写回前端12345678import mime from 'mime-types';const response = await axios({ url, responseType: 'stream',});ctx.type = mime.lookup(url);ctx.body = response.data; 读取外部链接流文件并写入本地再返回前端123456789101112131415161718import...
自定义Eslint规则并整合到Sonarqube
背景Eslint Eslint,我们常应用在代码静态扫描中,通过设定的Eslint的语法规则,来对代码进行检查,通过规则来约束代码的风格,以此来提高代码的健壮性,避免因为 代码不规范导致应用出现bug的可能。而规则是自由的,可以设定内部自己团队适用的规则,也可以直接使用开源社区比较热门的规则集合,...
记录k8s环境下结合alinode的使用
alinode官方地址:https://help.aliyun.com/product/60298.html?spm=a2c4g.60418.0.0.710343961QetaC 介绍 阿里官方提供的nodejs性能平台面向所有 Node.js 应用,提供 性能监控、安全提醒、故障排查、性能优化 等服务的整体性解决方案,尤其适合业务发展迅速、应用发布频繁、流量上升明显的 Node.js 应用。 Node.js 性能平台特别适合业务发展迅速、应用发布频繁、流量上升明显的 Node.js 应用。 平台全部功能免费使用 Node.js性能平台使用指南https://github.com/aliyun-node/Node.js-Troubleshooting-Guide/blob/master/0x04_%E5%B7%A5%E5%85%B7%E7%AF%87_Node.js%20%E6%80%A7%E8%83%BD%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md 使用创建应用 登录阿里云官网...
node环境canvas安装慢、安装失败的解决方法
摘自:https://blog.csdn.net/EverRose/article/details/122846767 node是跨平台的,那么对于任何的node模块理论也是应该是跨平台的。然而,有些node模块直接或间接使用原生C/C++代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。这也是canvas、SQLite3等模块安装的折磨之源。 canvas的安装过程 npm下载在仓库中的canvas包 执行canvas的package.json中的install命令(node-pre-gyp install --fallback-to-build) node-pre-gyp下载canvas已编译好的 macOS、Linux 和 Windows 的二进制文件,如果预构建的二进制文件不存在或不可用,则回退到从源代码构建 node-gyp编译为当前平台可用的node模块 为什么安装慢,还容易失败从安装过程可以发现, 步骤3和步骤4是核心问题区,...
nvm的安装及使用
NVM是一个非常方便的node包管理工具,可以实现在NodeJS 各个不同版本之间自由的进行切换。下面,介绍用root权限安装NVM工具。到2021年7月,nvm的最新版本为v0.39.1。 Linux安装nvmgithub地址:https://github.com/nvm-sh/nvm 1.下载包12cd /usr/localwget --no-check-certificate https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz 2.解压包1tar -xvf v0.39.1.tar.gz 在这里拿到文件的安装目录,放哪里无所谓 3.配置bashrc文件 export NVM_DIR="/usr/local/nvm-0.39.1" 改成自己的目录 123456#编辑文件vim ~/.bashrcexport NVM_DIR="/usr/local/nvm-0.39.1"[ -s...
nodejs的包更新策略加实践
package.json版本123456^ 开头的版本会固定首个大版本,后面的两个小版本会更新到最新,如 vue ^2.5.0 => vue 2.6.14~ 开头的版本会前两个版本,后面的小版本会更新到最新 vuex ~3.1.0 => vuex 3.1.3不带符号,直接写版本号会安装固定的版本 vue-router 3.5.3 => vue-router 3.5.3最小的版本设置为 x 或者 *,其最小的版本号会更新到最新 react 15.4.x => react 15.4.2依次类推任何一位版本设置为 x 或者 *,其当前位置的版本号都会更新到最新永远保持最新版本可以将版本号设置为 x 或者 *,如 pinia * => pinia 2.0.12 npm-check-updates(npm i -g npm-check-updates)工具的使用查看单个包的最新版本1ncu vue 更新 package.json(所有) 的最新依赖项1ncu -u 更新单个依赖1ncu -u vue 查看全局的安装包最新版本1ncu...
NodeJs整合elk+zipkin,输出日志到logstash
依赖 web框架(要求2.7+) 1"koa": "^2.13.1" 日志(基于tcp协议) 12"log4js": "^3.0.5","log4js-logstash-tcp": "^2.0.0" zipkin 12"zipkin-instrumentation-koa": "^0.22.0","zipkin-transport-http": "^0.22.0" 代码(ziplin部分)1234567891011# 下游(上游略,上游改localServiceName即可)const {Tracer, BatchRecorder, ExplicitContext} = require('zipkin');const {koaMiddleware} =...
Node项目中使用ESlint
ESLint1、介绍 ESLint是最流行的JavaScript Linter。 Linter 是检查代码风格/错误的小工具。其他类似的 Linter 工具还有:TSLint、stylelint。 它包含三个功能: (1)check syntax (2)find problems 前两个可以统称为 Code-quality rules,例如 no-unused-vars 规则。 (3)enforce code style 最后一个可以称为 Formatting rules ,例如 keyword-spacing 规则。 下面介绍的 Prettier 就只有这一个 Formatting rules 功能。 2、安装1234npm install -g eslint全局安装。npm i -D eslint局部安装。 3、使用 (1) 生成配置文件 1234下面的命令,可以在项目的根目录创建.eslintrc.js配置文件。eslint --init按照交互提示,依次选择进行: (2) 校验文件 12345eslint yourfile.js命令行会返回出现...
package-lock.json的作用
package-lock.json 文件的作用npm5之后安装文件之后会多出一个package-lock.json的文件,它的作用是: 安装之后锁定包的版本,手动更改package.json文件安装将不会更新包,想要更新只能使用 npm install xxx@1.0.0 --save 这种方式来进行版本更新package-lock.json 文件才可以 加快了npm install 的速度,因为 package-lock.json 文件中已经记录了整个 node_modules 文件夹的树状结构,甚至连模块的下载地址都记录了,再重新安装的时候只需要直接下载文件即可 它的意义在于锁定了包的版本,确保能够避免包版本不同产生的问题。 最外面的两个属性 name 、version 同 package.json 中的 name 和 version ,用于描述当前包名称和版本。 dependencies 是一个对象,对象和 node_modules 中的包结构一一对应,对象的 key...
pm2的cluster模式下使用log4js
配置log4js.config1234567891011121314151617181920{ /** * pm2 (boolean) (optional) * - set this to true if you’re running your app using pm2, * otherwise logs will not work (you’ll also need to install pm2-intercom as pm2 module: pm2 install pm2-intercom) */ pm2: true, /** * pm2InstanceVar (string) (optional, defaults to ‘NODE_APP_INSTANCE’) * - set this if you’re using pm2 and have changed the default name of the NODE_APP_INSTANCE variable. */ pm2InstanceVar:...