使用 TypeScript 创建 Koa 服务器
概述尽管使用 NodeJS 搭建 HTTP 服务器早已是 Web 开发者们的家常便饭,但结合时下最热门的 TypeScript 却能带来更棒的开发体验。今天,我们就来一起尝试将它们结合起来,快速搭建一个健壮的 Koa 服务。 Koa 基础环境搭建我们从 Koa 开始,它是一个轻量且富有表现力的 NodeJS Web 框架。 安装核心依赖安装 Koa 及其常用的中间件 (Middleware): 1npm install koa koa-bodyparser koa-json koa-logger koa-router 注意: koa-bodyparser、koa-json、koa-logger 和 koa-router 都属于 Koa 的中间件。 编写基础 Koa 代码首先,创建 src 目录用于存放源代码,并在其中创建 index.js 文件: 12src└── index.js 基础 Koa 服务 (index.js): 123456789101112131415161718192021222324252627import Koa from 'koa...
Node.js 应用提取 Heap 并加以分析的一些常用方法
提取heap snapshot在 Node.js 的本地运行环境中,开发者可以利用多种工具来提取堆(heap)转储,以分析内存使用情况,检测内存泄漏,优化性能。以下是一些常用且有效的工具: heapdump 模块heapdump 是一个流行的 Node.js 模块,允许在运行时生成 V8 引擎的堆快照。通过这些快照,开发者可以深入分析应用程序的内存使用情况,识别潜在的内存泄漏。 安装与使用: 1npm install heapdump 在应用程序中引入并使用: 12345678910const heapdump = require('heapdump');// 在需要生成堆快照的地方调用heapdump.writeSnapshot((err, filename) => { if (err) { console.error('Heap snapshot failed:', err); } else { console.log('Heap snapshot written...
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 fs...
记录 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 使用创建应用 登录阿里云官网 https://www.al...
Node 环境 Canvas 安装慢、安装失败的解决方法
摘自:https://blog.csdn.net/EverRose/article/details/122846767 Node.js 是跨平台的,那么对于任何的 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 是核心问题区。Canvas 的二进制文件托管在 h...
WSL2 开发环境配置指南:高效整合 IDEA、Go、Node.js 等工具
引言Windows Subsystem for Linux (WSL) 彻底改变了 Windows 用户的开发体验,特别是 WSL2 版本,它通过完整的 Linux 内核提供了接近原生的性能和兼容性。这使得开发者可以在熟悉的 Windows 系统上,无缝地利用 Linux 强大的生态系统和命令行工具。 本指南旨在提供一个全面的 WSL2 开发环境配置手册,帮助你高效地整合 IntelliJ IDEA、Go、Node.js、Git、Maven 等常用工具,并解决网络代理等常见问题,从而搭建一个流畅、高效的开发工作流。 重要提示:现代版本的 IntelliJ IDEA (2022.3+), GoLand, 和其他 JetBrains IDE 已经内置了对 WSL2 的无缝远程开发支持。推荐优先使用 IDE 自带的 WSL 远程功能,它比手动配置更简单、稳定,且能避免许多潜在的兼容性问题。 一、IntelliJ IDEA 与 WSL2 深度整合1.1 将 WSL 设置为默认终端要在 IDEA 中直接使用强大的 Linux 终端,可以按以下步骤操作: 打开 File -> S...
NVM 的安装及使用
NVM 是一个非常方便的 Node.js 包管理工具,可以实现在 Node.js 各个不同版本之间自由地进行切换。下面介绍用 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 "$NV...
Node.js 的包更新策略及实践
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 -g 检查某...
Node.js 整合 ELK + Zipkin,输出日志到 Logstash
依赖Web 框架(要求 2.7+)1"koa": "^2.13.1" 日志(基于 TCP 协议)参考:log4js-logstash-tcp 12"log4js": "^3.0.5","log4js-logstash-tcp": "^2.0.0" Zipkin参考:zipkin-instrumentation-koa 12"zipkin-instrumentation-koa": "^0.22.0","zipkin-transport-http": "^0.22.0" 代码(Zipkin 部分)123456789101112// 下游(上游略,上游改 localServiceName 即可)const { Tracer, BatchRecorder, ExplicitContext } = require('zipkin');const ...
Node 项目中使用 ESLint
ESLint1. 介绍 ESLint 是最流行的 JavaScript Linter。 Linter 是检查代码风格/错误的小工具。其他类似的 Linter 工具还有:TSLint、stylelint。 它包含三个功能: check syntax find problems 前两个可以统称为 Code-quality rules,例如 no-unused-vars 规则。 enforce code style 最后一个可以称为 Formatting rules,例如 keyword-spacing 规则。 下面介绍的 Prettier 就只有这一个 Formatting rules 功能。 2. 安装12npm install -g eslint # 全局安装npm i -D eslint # 局部安装 3. 使用(1) 生成配置文件下面的命令,可以在项目的根目录创建 .eslintrc.js 配置文件。 1eslint --init 按照交互提示,依次选择进行: (2) 校验文件12eslint yourfile.js ...
