可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Node.js 事件循环与异步任务示意
技术指南

macOS 如何升级 Node.js

macOS 升级 Node.js 推荐 nvm:nvm install node --latest-npm 安装最新版,nvm alias default 设默认;或用 Homebrew 执行 brew upgrade node,或用 n 管理器 sudo n lts。pkg 安装包用户需下载新版覆盖安装。

文件、模块与依赖组织示意
技术指南

如何使用 npm 本地包的可执行文件

npm 本地安装包的可执行文件位于 node_modules/.bin/ 目录。调用方式:npx <命令>(推荐)、./node_modules/.bin/<命令>,或在 package.json 的 scripts 中直接使用(npm 自动把 .bin 加入 PATH)。

文件、模块与依赖组织示意
技术指南

一台设备上如何使用多个 Node.js 版本

一台机器管理多个 Node 版本用 nvm:nvm install 22 / nvm install 24 安装多版本,nvm use 切换,nvm alias default 设默认。项目内可用 .nvmrc 文件自动锁定版本,Windows 用 nvm-windows。

Node.js 事件循环与异步任务示意
技术指南

如何用 Node.js 搭建一个简单的 Web 服务器

Node.js 内置 http 模块即可创建 Web 服务器:http.createServer((req,res)=>{...}).listen(3000),无需安装任何依赖。开发调试静态文件还可用 npx serve 或 npx http-server 一条命令起服务。

文件、模块与依赖组织示意
技术指南

Node.js 如何写入文件

Node.js 写文件用 fs 模块:fs.writeFile 异步写入、fs.writeFileSync 同步写入,Node 10+ 推荐 fs.promises.writeFile 配合 async/await。追加内容用 fs.appendFile,大文件用 createWriteStream 流式写入。

文件、模块与依赖组织示意
技术指南

JavaScript 对象有没有类似数组 map 的方法

JavaScript 对象没有原生 map 方法,但可用 Object.keys/entries 配合数组 map 转换,再用 Object.fromEntries 组装回对象。Node 10+ 与现代浏览器均支持该写法。

Node.js 事件循环与异步任务示意
技术指南

Node.js 中 module.exports 与 exports 有什么区别

module.exports 是模块真正导出的对象,exports 只是它的引用别名。给 exports 添加属性等价于修改 module.exports,但直接给 exports 重新赋值会断开引用导致导出失效。导出函数或对象请直接赋值 module.exports。

Node.js 事件循环与异步任务示意
技术指南

Node.js 如何利用多核 CPU

Node.js 单线程默认只用一个核,利用多核的方案:cluster 模块 fork 多个 worker 共享端口、worker_threads 处理 CPU 密集计算、pm2 的 cluster 模式一键多进程,或容器编排层做水平扩容。

Node.js 事件循环与异步任务示意
技术指南

Node.js 控制台输出如何不换行

Node.js 不换行输出用 process.stdout.write(),它不像 console.log 那样自动追加换行符。需要换行时在字符串里手动加 \n。适合实现进度条、同行动态刷新等场景。

Node.js 事件循环与异步任务示意
技术指南

Node.js 中 require 与 import/export 的区别

require 是 CommonJS 动态加载(运行时同步求值),import/export 是 ES 模块静态声明(编译期分析、支持 tree-shaking)。Node 12+ 原生支持 ESM:package.json 设 "type":"module" 或用 .mjs 后缀。新项目推荐 ESM。

Node.js 事件循环与异步任务示意
技术指南

forEach 循环里能用 async/await 吗

forEach 不支持 async/await——回调返回的 Promise 不会被等待,循环会瞬间跑完。串行处理用 for...of 循环,并行处理用 Promise.all 配合 map。

文件、模块与依赖组织示意
技术指南

package.json 中 dependencies、devDependencies 与 peerDependencies 的区别

dependencies 是生产运行必需(npm install 自动装),devDependencies 仅开发期需要(npm install --save-dev,生产可用 --omit=dev 跳过),peerDependencies 声明宿主项目应提供的包(插件类库使用,npm 7+ 自动安装并检查冲突)。