Node.js 入门核心基础知识笔记(新手详解版)

发布时间:2026/7/21 9:49:30
Node.js 入门核心基础知识笔记(新手详解版) 很多零基础同学学 Node.js 的第一个误区就是上来就啃框架、学全栈项目结果连代码运行报错都找不到原因。这份笔记完全按照「新手认知规律」排序每一节都先讲「是什么、为什么要学、不学踩什么坑」再讲核心知识点和避坑指南完全不用死记硬背跟着走就能跑通第一个 Node 程序完成入门闭环。Node.js 入门三层核心问题解答一目标与定位 —— 明确「为什么学 Node.js」1. 课程目标本门 Node.js 零基础入门课核心目标是帮学习者建立 Node.js 完整的基础认知体系掌握入门必备的核心开发能力能独立完成基础后端服务开发、自动化脚本编写同时理解前端工程化的底层逻辑。课程侧重点不深入算法实现、底层编译原理核心聚焦「JavaScript 基础语法落地 Node 核心 API 使用 模块化与工程化入门 Web 后端基础开发能力」适配场景为 Web 全栈开发、前端工程化基建、自动化脚本工具开发三大核心应用场景做入门铺垫学完可无缝衔接 Express/Koa 等框架进阶学习。2. 语言核心定位表格核心维度精准定位运行类型基于 Chrome V8 引擎的JavaScript 解释型运行时带 JIT 即时编译优化无需预编译代码写完即可直接运行核心应用领域Web 后端服务开发、前端工程化基建webpack/vite 等、自动化脚本工具、跨端桌面应用Electron、微服务开发、IoT 设备编程设计哲学事件驱动、异步非阻塞 IO以最小的硬件开销处理高并发 IO 请求同时实现前后端统一 JavaScript 语言栈大幅降低全栈开发的学习与协作成本核心优势轻量高效、高并发 IO 处理能力强、前后端同语言、拥有全球最大的开源包生态 npm二核心特征 —— 抓住「Node.js 是什么」1. 核心范式与语法风格编程范式多范式兼容完全继承 JavaScript 特性同时支持面向对象、函数式、过程式编程无强制范式约束开发灵活度极高。语法风格和浏览器端 JavaScript 完全一致弱类型、简洁灵活、无强制编译步骤对前端开发者零语法学习成本。与主流语言的核心区别表格对比语言核心差异Java/C#强类型编译型无需提前声明类型、无需预编译开发效率更高前后端同语言无技术栈切换成本Python脚本语言核心采用异步非阻塞事件模型高并发 IO 场景接口请求、批量文件处理性能优势显著更适配 Web 服务开发浏览器 JavaScript移除了 DOM/BOM 网页操作 API新增系统级 API文件、网络、进程拥有本地系统的完全操作权限2. 核心抽象机制代码组织的基本单元模块化默认 CommonJS 规范兼容 ES Module以单个 JS 文件为最小模块单元通过require/import导入、module.exports/export导出实现代码的拆分、复用与隔离其次以函数、对象 / 类作为业务逻辑的封装单元。核心数据结构完全兼容 JavaScript 原生结构数组、对象、Map、Set、字符串、数值等Node 专属核心结构Buffer二进制数据处理、Stream流式数据处理、EventEmitter事件发布订阅。3. 独特的「王牌特性」入门必吃透的 2 个核心异步非阻塞的事件驱动 IO 模型这是 Node.js 的灵魂与核心竞争力。所有 IO 操作文件读写、网络请求、数据库操作均为异步执行不会阻塞主线程单线程即可轻松处理上万并发请求无需像传统后端语言为每个请求新建线程硬件开销极低特别适配 IO 密集型的 Web 服务开发。前后端统一 JavaScript 全栈语言栈这是 Node.js 不可替代的核心优势。前端开发者无需学习新的编程语言即可无缝切换到后端开发前后端可共享代码、类型定义、工具库大幅降低全栈开发的学习成本与团队协作成本同时依托 npm 全球最大的 JS 开源生态可直接复用海量成熟的工具与框架。三学习路径与资源 —— 规划「怎么学 Node.js」1. 如何建立「最小可运行」环境3 步零基础落地安装核心程序访问 Node.js 官方中文网下载LTS 长期支持版本稳定无坑不建议下载 Current 最新版Windows/Mac 均为一键安装默认选项即可安装包自动配置环境变量自带 npm 包管理工具。验证安装成功打开终端Windows 用 CMD/PowerShellMac 用终端分别输入node -v和npm -v回车后正常输出版本号即为安装成功。完成最小运行闭环新建空白文件夹在里面新建hello.js文件写入代码console.log(Hello Node.js! 我的第一个Node程序运行成功)打开终端 cd 到该文件夹执行node hello.js终端成功打印对应内容即完成最小可运行环境搭建。2. 最高效的实践路径边学边敲以练促学学习阶段核心学习内容必做实操练习阶段达标标准前置准备JS 基础语法、ES6 异步核心Promise/async-await、基础命令行操作JS 基础逻辑 demo、熟练使用 cd 等命令、跑通 Hello World能看懂基础 JS 代码能通过命令行正常运行 Node 文件核心认知Node.js 核心定义、与浏览器 JS 的区别、两种运行方式、高频全局对象全局对象使用 demo、交互模式测试代码能清晰区分 Node 与浏览器 JS 的边界无调用 DOM API 的低级错误核心基础CommonJS 模块化规范、三大核心内置模块path/fs/http模块导入导出 demo、文件读写脚本、搭建可访问的 HTTP 服务能独立完成文件读写能搭建返回自定义内容的 HTTP 服务无路径报错工程化入门npm 核心命令、package.json 配置、依赖管理、自定义脚本初始化 npm 项目、安装第三方包、配置启动脚本、写批量文件处理工具能熟练用 npm 管理项目依赖能通过 npm run 命令启动服务异步核心闭环异步编程规范、async/await 标准写法、错误处理机制用 async/await 重写文件读写、开发带错误捕获的异步接口能写出规范的异步代码正确处理异步错误无回调地狱问题入门验收综合运用所有知识点完成完整入门项目开发简易后端接口服务实现多路由数据返回、静态文件访问独立完成项目开发服务正常运行无报错完成入门闭环核心实践原则拒绝只看文档 / 视频不动手每学一个知识点必须亲手敲代码运行验证用最小 demo 吃透每一个核心特性所有报错必须亲手解决这是零基础入门的唯一捷径。3. 官方权威资源最高效、最准确的信息源Node.js 官方中文文档https://nodejs.cn/ 零基础入门首选包含完整的入门指南、API 参考、最佳实践全中文无门槛是最权威的中文学习资源。Node.js 官方英文文档https://nodejs.org/ 一手官方资源包含最新的特性更新、语言规范、完整 API 文档适合进阶学习与查阅最新内容。npm 官方文档https://docs.npmjs.com/ 包管理工具的权威指南包含 npm 全命令用法、package.json 配置详解、依赖管理最佳实践。Node.js 官方 GitHub 仓库https://github.com/nodejs/node 可查看 Node.js 源码、了解迭代规划仓库内的文档与示例也是最权威的学习材料。Node.js 知识学习一、前置必备知识入门前提不学根本推进不下去Node.js 是 JavaScript 的运行时说白了就是「让 JS 能脱离浏览器跑在电脑 / 服务器上的工具」所以 JS 语法是底层根基而 Node 所有的运行、安装、服务启动都要靠命令行操作这两项是绕不开的入门门槛不用精通够用就行。1. JavaScript 基础语法入门够用标准不用啃进阶内容必学核心内容基础语法变量定义、函数声明与调用、数组 / 对象的基础操作、if 条件判断、for/forEach 循环ES6 核心箭头函数、解构赋值、Promise、async/awaitNode 异步编程的核心必须会基础用法【新手讲解 避坑】为什么不用学原型链、闭包、继承这些进阶内容入门阶段你只需要写基础的业务逻辑这些进阶内容完全用不上先把 Node 核心跑通等入门后再回头补完全不影响学习进度很多新手卡在 JS 进阶内容上直接放弃了 Node 学习完全没必要。最低标准你能写一个函数处理数组里的数据会用 Promise 处理异步就算达标。2. 命令行基础终端 / CMD必会的核心命令必学通用命令表格命令作用对应系统命令核心说明切换目录cd 文件夹名全平台通用Node 开发最高频命令查看当前目录内容ls(Mac/Linux) /dir(Windows)查看当前文件夹里的所有文件 / 子文件夹运行 Node 脚本文件node xxx.jsNode 核心执行命令全平台通用进入 Node 交互模式node临时测试代码用输入后回车即可进入退出交互模式 / 终止程序两次ctrlc或ctrld全平台通用【新手讲解 避坑】新手灵魂拷问我用鼠标点文件夹不行吗为什么非要用命令行答Node 程序是跑在终端里的你用鼠标点文件夹只是能看到文件但是没法告诉 Node「去运行这个文件、去安装这个包、去启动这个服务」这些操作只能靠命令行完成这几个命令是你 Node 开发的「吃饭家伙」必须练熟。【90% 新手第一天必踩的坑】运行node xxx.js报错「找不到模块 xxx.js」100% 是因为你没有 cd 到这个 js 文件所在的文件夹举个例子你的demo.js文件放在D盘/node-demo文件夹里正确操作是Windows 打开 CMD先输入D:回车切换到 D 盘再输入cd node-demo回车进入 js 文件所在的文件夹最后输入node demo.js回车才能正常运行补充小技巧文件夹名字有空格要用引号包起来比如cd 我的 node 项目。二、Node.js 核心认知先搞懂「是什么」建立正确认知很多新手学了很久都没搞懂「我写的 JS 和浏览器里的 JS 有什么区别为什么 Node 能做后端」这一节先把底层逻辑讲透避免越学越懵。1. Node.js 核心定义大白话翻译Node.js 是基于 Chrome V8 引擎的JavaScript 运行环境。浏览器里的 V8 引擎负责解析执行网页里的 JS 代码Node.js 把 V8 引擎单独拿了出来给它加了系统级的权限读写文件、开网络服务、管理进程等让 JS 能脱离浏览器直接跑在你的电脑本地、或者服务器上。核心用途后端接口开发、自动化脚本工具、前端工程化脚手架、桌面应用开发等。2. 浏览器 JS vs Node.js 核心区别新手必记表格特性浏览器 JSNode.js运行环境浏览器本地设备 / 服务器权限 独有 APIDOM、BOM只能操作网页文件系统、网络、进程等系统级 API顶层全局对象windowglobal/globalThis核心用途前端页面交互、用户行为处理后端服务、脚本工具、工程化脚手架【新手讲解 避坑】最核心的区别权限不同浏览器为了用户安全给 JS 的权限极低绝对不允许 JS 操作你电脑的本地文件不然你打开一个恶意网页它就能把你电脑文件删光而 Node 是跑在你自己的电脑 / 服务器上的给了 JS 完全的系统权限所以 JS 才能当后端语言用读写文件、操作数据库、搭建网络服务。【新手高频报错坑】在 Node 里写window.alert()、window.document直接报错记住Node 里没有浏览器的window对象也没有 DOM、BOM所有浏览器里操作网页的 API在 Node 里都不能用反过来Node 里的fs、http模块在浏览器里也不能用。3. Node.js 两种运行方式1. 脚本文件运行开发主流方式操作步骤新建一个demo.js文件写好代码 → 打开终端cd 到文件所在文件夹 → 执行node demo.js运行代码。2. 交互模式运行仅临时测试用操作步骤打开终端直接输入node回车就进入了交互环境直接输入 JS 代码回车就能立刻看到执行结果用完按两次ctrlc退出。【新手讲解】正经开发永远用「脚本文件运行」代码可以保存、修改、复用交互模式只适合临时测试比如你想试试12*3等于几或者试一个数组方法怎么用不用新建文件直接敲代码测试就行。三、Node.js 高频全局对象无需引入直接使用全局对象就是你不用写require导入在任何 Node 代码里都能直接用的对象以下是开发最高频的几个不用死记硬背写代码多用几次就记住了。console日志打印用法和浏览器里的console完全一致最常用console.log()用来调试代码、打印变量值、查看程序运行结果。【新手技巧】代码运行结果不对先在关键位置加console.log打印变量看值是不是符合预期这是最基础的调试方法。__dirname【重中之重】当前文件所在的绝对目录路径【新手必懂】这是解决 Node 路径报错的终极方案90% 的新手文件读取报错都是因为没用这个变量举个例子你的a.js文件放在D:/node-demo/test/a.js里那么__dirname的值永远是D:/node-demo/test和你在哪里执行node命令无关。__filename当前文件的完整绝对路径上面的例子里__filename的值就是D:/node-demo/test/a.js包含文件名本身开发中用的比__dirname少。process进程对象大白话管当前正在运行的这个 Node 程序的对象能获取程序运行的系统信息、命令行参数、环境变量也能控制程序退出。入门必用示例js// 查看当前程序运行的系统Windows/Mac/Linux console.log(process.platform); // 获取系统环境变量后面开发/生产环境区分会高频用 console.log(process.env); // 直接退出当前Node程序 process.exit();【新手避坑终极提醒】绝对不要手写相对路径./test.txt新手最常见的错误在a.js里写fs.readFile(./test.txt)明明test.txt和a.js放在同一个文件夹里却报错「找不到文件」。原因./相对路径是相对于你执行 node 命令的终端所在的文件夹不是相对于a.js所在的文件夹正确写法永远用path.join(__dirname, test.txt)来拼接路径不管你在哪里执行 node 命令永远能精准找到文件后面 path 模块会详细讲。四、CommonJS 模块化系统Node 核心所有项目的基础这是 Node.js 的灵魂所有 Node 项目都是基于模块化开发的必须吃透。1. 先搞懂为什么要有模块化新手灵魂拷问我把所有代码都写在一个app.js文件里不行吗当然可以但是当你的项目代码超过 1000 行你找一个功能要翻半天改一个地方怕影响其他代码完全没法维护模块化就是把你的代码按照功能拆成一个个独立的小文件比如user.js管用户相关逻辑file.js管文件操作每个文件只负责一个功能代码好维护、好复用更重要的是别人写好的成熟模块你直接导入就能用不用自己从零开始写轮子大大提升开发效率。2. CommonJS 核心语法规则Node.js 默认使用 CommonJS 模块化规范核心就两个语法模块导出module.exports 你要导出的内容模块导入const 变量名 require(模块标识)3. 模块三大分类新手必记导入规则表格模块类型说明正确导入方式新手高频错误核心模块Node.js 内置自带无需下载require(fs)直接写模块名不用加路径加了反而报错文件模块你自己写的 JS 文件require(./a.js)必须写相对 / 绝对路径忘记加./导致 Node 找不到文件第三方模块通过 npm 下载的外部包require(express)直接写包名没提前 npm 安装就直接导入4. 极简入门示例逐行讲解js// 1. 新建 a.js 文件导出模块内容 // 把要给别人用的内容挂在module.exports上 module.exports { name: Node.js入门, // 导出一个方法 sayHello: () { console.log(Hello 新手同学); } }js// 2. 新建 b.js 文件导入并使用a.js的内容 // 用require导入a.js相对路径必须加./拿到a.js导出的对象 const moduleA require(./a.js); // 直接使用a.js里导出的属性和方法 console.log(moduleA.name); // 打印Node.js入门 moduleA.sayHello(); // 执行方法打印Hello 新手同学【新手讲解 避坑】【必记规则】导入自己写的文件模块路径必须加./如果你写require(a.js)Node 不会去当前文件夹找 a.js只会去内置核心模块、node_modules 文件夹里找100% 报错找不到。入门阶段只用module.exports别用exports很多教程会讲exports新手很容易踩坑比如exports {name:1}是完全无效的而module.exports {name:1}永远不会错等你入门后再去研究两者的区别完全不影响开发。模块的代码只会执行一次多次导入同一个模块只会在第一次导入的时候执行代码后面都会复用导出的结果不会重复执行。五、入门必学 4 大内置模块Node.js 入门灵魂Node.js 内置了上百个开箱即用的模块但是入门阶段你只需要吃透这 4 个高频核心模块就能覆盖 80% 的基础开发场景不用贪多学其他的。1. path 模块路径处理核心用途解决跨平台路径兼容问题永远不要手动拼接路径Windows 系统的路径用反斜杠\Mac/Linux 系统用正斜杠/你手动拼接的路径换个系统就可能报错path 模块会自动根据你当前的系统生成正确的路径搭配__dirname使用永远不会出现路径找不到的问题。高频方法 入门示例js// 第一步导入path模块核心模块直接写模块名导入 const path require(path); // 1. path.join()拼接路径开发最高频用法 // 拼接当前文件所在目录 test.txt生成全平台兼容的绝对路径 const filePath path.join(__dirname, test.txt); console.log(filePath); // 会自动根据系统生成正确的路径 // 2. path.resolve()生成绝对路径效果和join类似入门会一个就行 const absolutePath path.resolve(test.txt);【新手讲解】记住一个固定写法只要你要写文件路径就用path.join(__dirname, 你的文件名/文件夹名)这是 Node 开发的行业标准写法能帮你避开 90% 的路径报错问题。2. fs 模块文件系统核心用途大白话让你的 JS 能操作你电脑里的文件和文件夹比如读取文件内容、写入文件、新建文件夹、删除文件这是后端开发最基础的能力。入门必学异步读取文件逐行讲解js// 导入fs模块 const fs require(fs); // 异步读取文件fs.readFile(文件路径, 编码格式, 回调函数) fs.readFile(path.join(__dirname, test.txt), utf8, (err, data) { // Node.js 规范回调函数第一个参数永远是错误对象错误优先回调 if(err) { // 如果读取失败打印错误终止执行 return console.log(文件读取失败, err); } // 读取成功打印文件内容 console.log(文件内容, data); });【新手讲解 避坑】为什么要加utf8编码格式不加的话readFile 返回的是 Buffer 二进制数据你看不懂加了utf8才会返回我们能看懂的文本内容。为什么要用异步Node.js 是异步非阻塞模型同步读取文件会卡住整个程序只有等文件读取完才能执行后面的代码而异步读取不会卡住文件读取的同时后面的代码正常执行等读取完成后再执行回调函数里的内容这是 Node 的核心优势。入门阶段先掌握读和写其他的删除、文件夹操作等你熟练了再学完全够用。3. http 模块服务搭建核心用途这是 Node.js 能做后端开发的核心它能让你的电脑变成一台服务器接收浏览器的请求给浏览器返回数据实现后端接口、网站服务的开发。入门必写Hello World 服务逐行讲解js// 导入http模块 const http require(http); // 1. 创建服务器 // 回调函数每次有客户端浏览器访问这个服务就会执行一次 // req请求对象包含客户端的所有信息访问地址、请求方法、参数等 // res响应对象用来给客户端返回内容 const server http.createServer((req, res) { // 【新手必加】设置响应头解决浏览器中文乱码问题 res.setHeader(Content-Type, text/plain;charsetutf-8); // 给客户端返回内容并结束本次响应 res.end(Hello Node.js新手入门成功啦); }); // 2. 监听端口启动服务 // 3000是端口号回调函数是服务启动成功后执行的内容 server.listen(3000, () { console.log(服务已启动访问地址http://localhost:3000); });【新手讲解 操作步骤】把上面的代码写在server.js文件里cd 到文件所在文件夹执行node server.js启动服务打开浏览器输入http://localhost:3000就能看到你写的内容你的第一个后端服务就跑通了【新手高频坑】端口占用报错如果启动报错「端口已被占用」要么关掉之前启动的 Node 服务要么把 3000 改成其他端口比如 8080、8000重新启动就行中文乱码必须加res.setHeader那一行代码不然浏览器里的中文会变成乱码修改代码后必须重启服务才能生效改完代码先按ctrlc关掉之前的服务再重新执行node server.js不然浏览器看不到修改后的内容。4. url 模块网址解析核心用途解析客户端请求的 URL 地址提取接口路径、请求参数比如用户访问http://localhost:3000/user?name张三age20你要用 url 模块拿到name和age的参数才能处理对应的业务逻辑后端接口开发高频使用。六、npm 包管理工具Node.js 开发必备可以说没有 npmNode.js 开发寸步难行入门必须掌握核心用法。1. 先搞懂npm 是什么为什么要用大白话翻译npm 是 Node.js 自带的包管理工具装 Node 的时候就自动装好了不用额外安装npm 有一个全球最大的 JS 代码仓库全世界的开发者把自己写的成熟的 Node 代码包比如接口开发框架 express、数据库操作包 mysql都上传到这个仓库里你不用自己从零写轮子比如你要写后端接口不用自己用 http 模块磨底层逻辑直接 npm 下载 express 包几行代码就能搞定大大提升开发效率npm 帮你管理所有的第三方包下载、更新、卸载、版本控制全靠它。2. 核心高频命令新手必会表格命令作用完整命令简写 / 补充说明项目初始化npm initnpm init -y一键生成默认配置不用一步步回车确认本地安装第三方包npm install 包名简写npm i 包名安装到当前项目业务依赖用全局安装第三方包npm install 包名 -g简写npm i 包名 -g工具类包比如脚手架用卸载包npm uninstall 包名简写npm un 包名全局卸载加-g安装项目所有依赖npm install简写npm i有 package.json 就能一键安装所有依赖运行项目脚本npm run 脚本名执行 package.json 里 scripts 配置的自定义命令3. 核心文件 / 文件夹讲解新手必懂package.json项目的核心配置文件你的项目「身份证」记录项目名称、版本号、作者信息记录项目依赖的所有第三方包以及版本号配置自定义脚本命令比如启动服务、打包项目的命令【重要】别人拿到你的项目只要有这个文件执行npm i就能安装所有依赖不用给对方传几百兆的 node_modules 文件夹。node_modules第三方依赖包的存放文件夹你 npm 安装的所有包都存在这里npm 自动生成、自动管理你不用手动修改里面的内容【新手避坑】这个文件夹可以随便删只要有 package.json执行npm i就能重新生成git 上传项目的时候绝对不要上传这个文件夹又大又慢只需要传 package.json 就行。package-lock.json依赖版本锁定文件自动生成的用来锁定你安装的包的精确版本号保证团队所有人、所有环境安装的依赖版本完全一致不会出现「我电脑上能跑你电脑上跑不了」的问题不要手动修改。【新手讲解 实操示例】新建一个项目文件夹cd 进去执行npm init -y生成 package.json 文件执行npm i express安装 express 框架你会发现自动生成了 node_modules 文件夹和 package-lock.jsonpackage.json 里多了 dependencies 依赖项在 package.json 的 scripts 里加一行start: node server.js然后执行npm run start就能启动你的服务不用每次都敲长命令。七、Node.js 异步编程核心难点必学必会这是 Node.js 入门最难的一个知识点但是只要你理解了底层逻辑就会发现非常简单我们用大白话讲透不用记晦涩的术语。1. 先搞懂什么是同步什么是异步举个生活里的例子你一下就懂了同步你去奶茶店排队点单前面的人没做好你就一直站在柜台等着啥也干不了直到你的奶茶做好你才能走。代码里就是一行代码没执行完下一行代码永远等着整个程序会卡住。异步你去奶茶店点单付了钱拿了号就找个位置坐着刷手机不用在柜台等着奶茶做好了会叫号你再去拿。代码里就是异步操作读文件、网络请求发起后不用等着它完成先执行后面的代码等异步操作有结果了再回来处理程序永远不会卡住。Node.js 所有的 IO 操作文件读写、网络请求、数据库操作都是异步的这也是 Node 能高性能处理高并发请求的核心原因。2. 异步编程的发展历程按学习优先级排序回调函数异步基础Node.js 默认的异步方案但是多层嵌套会出现「回调地狱」代码很难维护Promise为了解决回调地狱把嵌套的回调改成了.then().then()的链式调用代码扁平化好维护了很多async/await现代 JS 异步编程的标准写法也是入门最终要掌握的写法能把异步代码写的像同步代码一样从上到下执行好读、好写、好维护。3. 现代标准写法async/await 入门示例逐行讲解js// 导入promise版本的fs模块支持async/await不用写回调函数 const fs require(fs/promises); const path require(path); // 1. 用async关键字声明这是一个异步函数只有async函数里才能用await async function readFileTest() { // 2. 用try/catch捕获异步操作的错误相当于回调函数里的err参数 try { // 3. await关键字放在异步操作前面会等着异步操作完成拿到结果再往下执行 const data await fs.readFile(path.join(__dirname, test.txt), utf8); // 上面的读取完成才会执行这一行 console.log(文件读取成功, data); } catch (err) { // 如果异步操作出错会直接进到catch里不会让程序崩溃 console.log(操作失败, err); } } // 执行异步函数 readFileTest();【新手讲解 避坑】【90% 新手必踩的坑】await 必须写在 async 函数里如果你直接在代码的最顶层写await fs.readFile()会直接报错必须把 await 放在带 async 关键字的函数里这是硬性语法规则。为什么要用fs/promises普通的fs模块是回调函数版本的不支持 awaitfs/promises是 Node 官方提供的 Promise 版本的 fs 模块直接支持 async/await不用自己封装。必须加 try/catch 捕获错误异步操作很容易出错比如文件不存在如果不捕获错误整个 Node 程序会直接崩溃这是开发规范必须养成习惯。入门阶段你只要会用 async/await 写异步代码就算达标回调和 Promise 理解原理就行实际开发优先用 async/await。八、入门必备开发常识新手避坑指南错误处理规范回调函数永远遵循「错误优先」原则第一个参数是错误对象必须先判断 err 是否存在async/await永远用try/catch捕获异步错误不要让程序直接崩溃。环境变量区分开发 / 生产环境用process.env读取环境变量区分开发环境你自己写代码的电脑和生产环境上线的服务器比如开发环境用本地数据库生产环境用线上数据库不用每次上线改代码安全又方便。端口占用问题解决启动服务报错端口被占用最简单的办法就是换个端口号也可以用命令找到占用端口的进程关掉它Windowsnetstat -ano | findstr 3000找到进程 PID去任务管理器关掉Mac/Linuxlsof -i:3000找到进程 PID执行kill -9 PID关掉。九、Node.js 最简入门学习路径零基础按步骤走不跳步很多新手学不会 Node都是因为跳步上来就学框架、做项目结果基础不牢报错了都找不到原因按这个步骤一步步来每一步达标再往下走零基础也能顺利入门补齐 JS 基础语法 命令行基础能熟练 cd 到指定文件夹运行 node 命令不报错安装 Node.js 环境写第一个 hello world 脚本成功运行打印出内容吃透 CommonJS 模块化规范能熟练实现模块的导入导出不报错掌握path/fs/http三大核心模块能成功读取文件、启动一个后端服务浏览器能正常访问熟练使用 npm 初始化项目、安装第三方包、配置并运行自定义脚本掌握async/await异步编程标准写法能用同步的写法写异步代码正确处理错误独立用 http 模块写一个简单的后端接口能根据不同的请求地址返回不同的内容完成入门闭环