nodejs
亮子AI
全干程序员,wx联系:henry334013
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【MySQL】node.js 如何判断连接池是否正确连接上了?
要判断连接情况,请在初始化后立刻执行一次,并捕获来识别数据库不存在的情况。原创 2026-01-09 11:48:55 · 436 阅读 · 0 评论 -
【MySQL】node.js 如何批量更新数据?
方法优点缺点建议CASE WHEN标准 SQL,不依赖唯一键冲突,单次 IO拼接 SQL 逻辑复杂,数据量过大时 SQL 字符串超长中等规模更新首选速度最快,代码最简洁必须有主键/唯一索引,会意外插入不存在的数据超大规模更新首选事务循环逻辑最清晰,支持复杂判断数据库往返 IO 次数多,性能相对较低小批量或逻辑复杂时使用。原创 2026-01-08 11:49:33 · 402 阅读 · 0 评论 -
【Node.js】为什么数据库连接总是中断?
单纯的import没问题,但要确保使用 createPool而不是。只要使用了连接池并妥善处理了,你的 Node.js 程序跑一年数据库也不会因为连接问题停止工作。原创 2026-01-08 11:34:07 · 451 阅读 · 0 评论 -
【node.js MySQL】node.js 如何连接 MySQL?
新项目:直接用mysql2需要类型安全:Prisma 或 TypeORM。简单 CRUD:mysql2 足够。注意:连接时推荐使用连接池(Pool)来提高性能,避免频繁创建连接。如果有特定需求(如 TypeScript 支持、性能基准),可以提供更多细节,我可以进一步说明!原创 2025-12-21 10:18:35 · 1086 阅读 · 0 评论 -
【node.js】node.js 两种模块规范 CommonJS 和 ESM 如何选择?
如果你正在开发新项目,建议优先使用ESM,因为它是未来的标准,且支持更好的性能优化。如果你在维护老旧项目或使用大量仅支持 CJS 的老旧库,则继续使用CommonJS。原创 2025-12-21 08:45:32 · 1010 阅读 · 0 评论 -
【node.js】如何使用 node.js 来制作命令行应用?
无论哪种,都建议在 package.json 的 “bin” 字段配置可执行命令,便于全局安装(npm link 或发布到 npm)。如果项目用 TypeScript,oclif 或 Gluegun 会更友好。缺点:需要手动解析选项(如 --flag、-v)、子命令、帮助信息等,复杂时代码容易混乱。(Node.js 18+ 有内置实验性解析器,但仍不推荐用于生产级 CLI。优点:无依赖、最轻量,适合极简单的脚本或原型。这些库适合大多数场景,开发快速、社区活跃。它会自动脚手架一个完整项目,支持插件扩展。原创 2025-12-21 07:59:59 · 534 阅读 · 0 评论 -
【NestJS】如何避免 pg-boss 阻塞消息?
默认情况下,原创 2025-10-26 13:34:22 · 871 阅读 · 0 评论 -
【PM2】PM2 集群模式适用的场景
当你的 API 需要处理大量并发请求时,可以通过集群模式显著提升吞吐量。WebSocket 连接需要长时间占用资源,通过集群模式分担连接负载。使用集群模式并行处理任务队列中的任务,提高处理速度。WebSocket 服务。原创 2025-10-10 12:17:21 · 180 阅读 · 0 评论 -
【node.js】node.js 最佳实践
这个库在 github 上获得超过 10 万星,值得一读:https://github.com/goldbergyoni/nodebestpractices原创 2025-10-10 11:53:29 · 261 阅读 · 0 评论 -
【NodeJS 二维码】node.js 怎样读取二维码信息?
【代码】【NodeJS 二维码】node.js 怎样读取二维码信息?原创 2025-09-18 14:34:21 · 366 阅读 · 0 评论 -
【PostgreSQL】Ubuntu 下使用 Prisma 的初始化流程
完成上面准备工作就ok了,不需要手工创建数据库,因为下面将由 Prisma 来创建数据库。整个数据库创建工作就完成了。原创 2024-01-17 23:15:00 · 971 阅读 · 0 评论 -
【node.js】怎样在MacOS上安装 node, npm?
运行安装器,按照提示点击按钮,一步一步完成安装。上下载安装器(.pkg installer)。原创 2022-11-16 10:21:25 · 1141 阅读 · 0 评论 -
【Node.js】Express中输出HTML,但是不包含layout
使用模板的时候,传入参数 layout: false,就可以不使用layout:原创 2022-07-09 12:19:55 · 328 阅读 · 0 评论 -
【TypeScript】Argument of type ‘Buffer‘ is not assignable to parameter of type ‘string‘.
当使用 fs.readFileSync 读取json文件,然后用 JSON.parse() 时,出现上述错误。正确的方法是加上 utf-8 参数:原创 2022-06-14 07:18:36 · 1567 阅读 · 0 评论 -
JWT 的退出登录方法
JWT 登录之后,服务器发放 token。在到期时间之前,token 一直有效,那么如何才能实现用户登出(让 token 失效)?黑名单校验凡是退出登录的token都放入黑名单中,定期清理。每次用户请求服务器都校验token是否在黑名单版本号校验访问时从token中取出版本号和用户id 和 redis中存储 用户id和版本号 做对比,不一致则不给访问。用户登出的时候在redis中把用户版本号加一。过期时间校验登录时token附带创建时间。访问时校验redis存储的过期时间,如果创建时间大于过原创 2020-10-29 00:14:29 · 11443 阅读 · 6 评论 -
【TypeScript】怎样使用环境变量包dotenv?
首先安装:npm i dotenvnpm i -D @types/dotenv创建.env文件,写入环境变量PORT=3011使用环境变量:import 'dotenv/config';const port = process.env.PORT原创 2022-05-08 15:38:18 · 2603 阅读 · 2 评论 -
【nest.js】怎样开启跨域访问 CORS?
在Express中,使用cors模块来实现跨域访问:var express = require('express')var cors = require('cors')var app = express()app.use(cors())在 Nest.js 中,可以使用 app.enableCors() 来启用cors:const app = await NestFactory.create(AppModule);app.enableCors();await app.listen(3000原创 2022-05-06 21:27:22 · 4297 阅读 · 0 评论 -
【ORM】TypeORM 与 Prisma 的详细对比
这是一篇比较详尽的对比:Prisma vs. TypeORM结论:目前TypeORM更流行,但是未来Prisma更有希望胜出,因为它有资本支持,有全职开发团队。原创 2022-05-03 11:30:55 · 3639 阅读 · 0 评论 -
【TypeScript】怎样在Node.js中使用全局变量global?
如果直接使用 global.MYVAR,TS会报错,因此你需要增加类型定义,让TS能够识别。你可以创建一个文件 src/types/global.d.ts,内容如下:declare global { var MYVAR: string}export {}然后在 tsconfig.json 文件中确认有下面的命令:"include" : [ "src/**/*"]这样就可以愉快地使用 global.MYVAR 了。...原创 2022-04-22 13:30:37 · 4625 阅读 · 0 评论 -
【JavaScript】迅速确定url是网址
如果只是需要判断url开头是不是http或https,则不要用正则表达式,直接字符串匹配是最迅速的:if (urlString.indexOf('http://') === 0 || urlString.indexOf('https://') === 0)原创 2022-03-05 16:44:16 · 914 阅读 · 0 评论 -
【JavaScript】forEach中无法使用await/async
forEach循环会产生多个同步调用,就算你在forEach中使用了await,forEach也不会等待调用结束,forEach之后的语句会立即执行。因此,如果你要在循环中使用 await,还是得使用for … of 结构,例如:async function printFiles () { const files = await getFilePaths(); for (const file of files) { const contents = await fs.readFile(原创 2022-02-25 01:01:00 · 2009 阅读 · 0 评论 -
【Javascript】无用的技巧:使用变量调用与变量值同名的函数
花了一个小时,查找、测试将变量值转换成函数来使用的方法。Javascriptwindow["functionName"](arguments);Node.jsvar x = {};x.f1 = function(){ console.log('Call me as a string!');}然后调用:var funcstr = "f1";x[funcstr]();结论上述方法并没有减少代码量,也并不清晰,所以清晰且直观的方法还是使用 if:if (funcName =原创 2021-09-26 16:36:59 · 341 阅读 · 0 评论 -
【node.js】你再也不需要 body-parser 了
当我们用 Express 做一个可以接收 POST 请求的应用时,肯定会用到 body-parser,使用过程通常是这样的:第一步,安装模块:npm install body-parser第二步:使用const express = require('express');const bodyParser = require('body-parser');const app = express();app.use(bodyParser.json());Express 4.16.0 已经内置原创 2021-06-06 09:51:31 · 1827 阅读 · 0 评论 -
pm2 如何使用 ES6?
使用 ES6 语法,pm2 启动应用的时候会报错,解决办法是使用 babel-node 来启动应用,具体操作:安装 babelnpm i -D babel-preset-envnpm i -D babel-plugin-transform-runtime并创建 .babelrc 文件:{ "plugins": [ ["transform-runtime", { "regenerator": true }] ], "p原创 2021-06-05 16:13:09 · 405 阅读 · 0 评论 -
node 安装 pg 出现 gyp 错误的解决办法
花了3+个小时解决的问题,记录一下。我在 Ubuntu 18.04 上安装 npm install pg 时,出现错误:......gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1gyp ERR! stack at ChildProcess.onCpExit (/usr/share/node-gyp/lib/configure.js:431:16)gyp ERR! stack原创 2021-06-05 07:49:21 · 3355 阅读 · 0 评论 -
npm 安装 bcrypt 出现 gyp 错误的解决办法
bcrypt 需要系统有 gyp 插件支持,简单的解决办法是使用 bcryptjs,它的接口与 bcrypt 是完全一样的,只是它的实现是纯 JS,不依赖其他插件:npm i bcryptjs原创 2021-05-15 15:26:30 · 564 阅读 · 0 评论 -
Javascript - 三个点(...)是什么操作运算?
对象/数组扩展运算符它可以把对象或数组进行扩展。举例一:展开对象const adrian = { fullName: 'Adrian Oprea', occupation: 'Software developer', age: 31, website: 'https://oprea.rocks'};const bill = { ...adrian, fullName: 'Bill Gates', website: 'https://micr原创 2021-05-02 15:51:00 · 1238 阅读 · 0 评论 -
Puppeteer没有自动安装Chromium的解决办法
按照官方文档的说法,安装 Puppeteer 时会自动安装 Chromium 浏览器。但是实际安装过程中,会出现不安装 Chromium 的情况,这时需要使用下面的命令来手动安装 Chromium:node node_modules/puppeteer/install.js这样就能把 Chromium 正确的安装到 node_modules/puppeteer/.local-chromium 目录下。根据操作系统及浏览器版本的不同,浏览器大概占用 200M~400M 的磁盘空间。...原创 2021-04-11 09:08:32 · 12224 阅读 · 0 评论 -
使用 Babel 转换 ES6 代码为 ES5
为什么要把 ES6 转成 ES5 代码?简单答案就是:为了浏览器兼容,以及为了在 node.js 环境可以顺畅运行应用程序。老的浏览器不支持 ES6 语法,因此需要转成兼容性更好的 ES5。在 node.js 环境中,node 对 ES6 的支持一直被诟病,到了 13 版本之后,才出了模块模式(在 package.json 中增加一句:“type”: “module”),但有些库仍然不支持 ES6 语法。因此,如果你的 node.js 程序遇到不认识 ES6 语法的时候,请使用 Babel 转码一下也原创 2021-03-29 21:44:44 · 1498 阅读 · 1 评论 -
Node.js 连接 PostgreSQL 的奇怪问题:query 不会返回!
这个问题花了我6个小时!无论是使用回调函数、还是使用 Promise,query 死活没反应。数据库连接正常,新建一个项目来使用数据库也是正常。最后发现是版本问题,升级 pg(node-postgresql)到 8.2.0 版本就解决了!结论:在使用 Node 14 时,要升级 pg 到 8.0 以上!参考:https://github.com/brianc/node-postgres/issues/2069#issuecomment-619456031...原创 2021-02-12 19:03:37 · 536 阅读 · 0 评论 -
node.js 接收 POST 数据错误:Error: request entity too large
增加接收数据的大小方法是:app.use(express.json({limit: '50mb'}));app.use(express.urlencoded({limit: '50mb'}));https://stackoverflow.com/a/19965089/3054511原创 2021-02-09 20:46:36 · 456 阅读 · 0 评论 -
node.js 中怎样解决 UnhandledPromiseRejectionWarning 错误?
在 node.js 运行中,当遇到 UnhandledPromiseRejectionWarning 错误或警告时,该如何解决呢?错误提示有时候是这样的:(node:6603) UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Object reference chain is too long有时候是这样的:(node:6603) UnhandledPromiseRejection原创 2021-01-31 17:11:47 · 28067 阅读 · 2 评论 -
使用 node.js 创建命令行子命令 Hello World
使用 commander 库来创建命令行工具很方便,commander 在 github 上有将近两万 star,是一个流行的 node.js 库。想想 git 命令包括众多的子命令:git add, git commit, git push, 等等。你也可以创建像 git 一样的一组命令行工具。使用 commander 来创建具有子命令的一组命令很方便,子命令是一个单独的 js 文件,默认文件名:[主命令]-[子命令].js创建过程创建一个目录,并初始化:mkdir subcmdcd su原创 2021-01-30 21:13:38 · 397 阅读 · 0 评论 -
node.js 微信公众号验证URL实例
微信公众号验证URL地址及签名,官方有实例代码,写得啰嗦:const crypto = require('crypto');const url = require('url');exports.wechat = (req,res) => { var query = url.parse(req.url, true).query; var signature = query.signature; var timestamp = query.timestamp; var nonce原创 2021-01-19 07:26:19 · 522 阅读 · 2 评论 -
ES6,Typescripts,如何正确import express?
使用Typescripts,在导入模块时,常常出一些难以理解的简单错误。下面就给出标准答案,让你在 import 模块的时候不再迷惑。1. 标准做法import { Request, Response, Application } from 'express';import express = require('express');var app: Application = express();app.get('/', function (req: Request, res: Respons原创 2020-11-26 16:13:21 · 2798 阅读 · 0 评论 -
[node.js] Promise中,resolve, reject 之后需不需要 return?
答案是,需要。为了阻止后面的代码被执行,应当加上 return,或者直接使用:return resolve(...)详细解释:https://stackoverflow.com/a/32536083/3054511原创 2020-11-21 11:39:00 · 2985 阅读 · 0 评论 -
MySQL 转换1,0为 true,false
Mysql的基本数据类型中并没有布尔型,之所以建表和数据操作中能够使用BOOLEAN是因为mysql将其作为了tinyint(1)的别名。用0表示false,1表示true。但开发过程中,既然我们给某一字段定义为布尔型,那么在我们获取数据后,期望得到的必然是布尔值而不是0或1。因此我们可以在得到返回值后转换一下。这里我使用的是mysql模块,该模块允许给typeCase属性设置一个回调函数。详见官网说明 https://github.com/mysqljs/mysql#stringconnection原创 2020-10-30 00:08:56 · 9543 阅读 · 0 评论 -
Node.js 中联合使用两个日志包:Morgan, Winston
代码:var logger = new winston.Logger({ transports: [ new winston.transports.File({ level: 'info', filename: './logs/all-logs.log', handleExceptions: true...原创 2020-03-08 18:08:57 · 918 阅读 · 0 评论 -
PostgreSQL 如何写条件:值在数组中、值不在数组中
值在数组中:SELECT COUNT(*) FROM "messages" WHERE 3 = ANY (recipient_ids)值不在数组中SELECT COUNT(*) FROM "messages" WHERE NOT (3 = ANY (recipient_ids))如果你用的是 node.js 的 pg 包,值在数组中可以这样写:var ids = [1,3,4]; ...原创 2020-03-06 20:42:05 · 9254 阅读 · 0 评论 -
怎样在 Ubuntu 18.04 上安装 yarn,以及 yarn 常用命令有哪些?
Node 的包依赖管理工具,从速度和版本控制方面来看,yarn 比 npm 有优势,因此建议用 yarn 来代替 npm。在 Ubuntu 系统上要安装 yarn,首先增加源:curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -echo "deb https://dl.yarnpkg.com/debian...原创 2020-01-27 17:00:40 · 1976 阅读 · 0 评论
分享