Node.js新手入门:从零搭建开发环境到运行第一个服务器 📅 2026/8/7 15:41:35 1. 从“Node.js是干什么的”说起为什么你需要它如果你点开了这篇文章大概率是刚接触编程或者准备学习前端、后端开发然后被各种教程里提到的“Node.js”给搞懵了。它到底是啥一个软件一个环境还是一个新的编程语言别急我用最直白的话给你解释一下。你可以把Node.js想象成一个“翻译官”或者“发动机”。我们平时写的JavaScript代码比如让网页上的按钮变色、弹出一个对话框这些代码只能在浏览器里运行因为浏览器内置了能读懂JavaScript的“大脑”JavaScript引擎。而Node.js简单说就是把这个“大脑”V8引擎从浏览器里单独拿了出来装在了你的电脑上。这样一来JavaScript这个原本只能在浏览器里“跳舞”的语言现在就能在你的电脑操作系统里“干活”了。它能干什么活呢非常多。比如你可以用它来搭建一个网站的后台服务器就像用Java、Python做的那样处理用户登录、数据存取你可以用它来开发桌面应用程序比如VS Code编辑器就是用Node.js相关技术开发的你还可以用它来写一些自动化脚本比如批量处理文件、爬取网络数据等等。所以无论你是想成为全栈工程师前后端都懂还是想用JavaScript统一你的技术栈Node.js都是你必须跨过去的一道坎。网上教程很多但很多要么版本老旧要么步骤跳跃对新手极不友好。今天这篇我就以一个过来人的身份带你从零开始手把手完成Node.js在Windows系统下的下载、安装和环境配置。我会把每一步的意图、可能遇到的坑以及怎么验证是否成功都给你讲清楚。目标很简单让你看完就能在自己的电脑上跑起第一个Node.js程序并理解这背后的“所以然”。2. 下载前的准备选对版本事半功倍在激动地点开浏览器准备下载之前有几个关键选择需要你搞清楚。这就像买车你得先决定是买燃油车还是电动车是家用轿车还是SUV。选对了后面一路顺畅选错了可能麻烦不断。2.1 LTS版 vs Current版稳定与尝鲜的抉择打开Node.js官网你会看到两个主要的下载选项LTS和Current。这可能是你遇到的第一个选择题。LTS (Long Term Support长期支持版)这是为生产环境准备的“稳定版”。它经过了充分的测试bug较少并且会获得长达数年的安全更新和维护。对于绝大多数学习者、以及公司里正在运行的项目强烈建议选择LTS版本。它的版本号通常是偶数比如 v18.x, v20.x。你当前看到的最新LTS可能是 v20.x 或更新。Current (当前版本)这是包含最新特性的“尝鲜版”。它拥有JavaScript最新的语言特性和Node.js最新的API但可能不够稳定且支持周期短。这个版本适合那些想第一时间体验新功能的开发者或者用于本地学习和测试。它的版本号通常是奇数比如 v19.x, v21.x。我的建议作为新手无脑选择LTS 版本。我们的首要目标是搭建一个稳定、可靠的学习和开发环境而不是去追新特性。那些新特性等你在LTS环境下学扎实了再去Current版本里体验也不迟。2.2 安装包格式MSI与二进制包的区别对于Windows用户官网通常会提供两种格式.msi安装包和.zip压缩包。.msi (Windows Installer)这是推荐新手使用的安装方式。它是一个图形化的安装向导就像你安装QQ、微信一样点点下一步即可。它的最大优点是会自动帮你配置系统的环境变量一个非常重要的概念后面会细说几乎不需要你手动干预。我们本篇教程也将主要基于MSI安装包进行。.zip (二进制压缩包)这是一个绿色解压版。下载后解压到任意目录即可。但它不会自动配置环境变量需要你手动去系统设置里添加。这种方式更灵活适合有经验的用户或者需要在一台电脑上管理多个Node.js版本的情况。所以请直接下载对应你系统位数现在基本都是64位的.msi安装包。如何查看系统位数在桌面“此电脑”图标上右键 - “属性”在“系统类型”里就能看到。2.3 一个常见的“坑”注意系统架构与安装路径在下载页面你可能会看到Windows Installer (.msi)下面还分x64和x86。如果你的电脑是64位系统就选x64。除非是非常老旧的电脑否则现在基本都是64位系统。关于安装路径安装向导默认会建议安装在C:\Program Files\nodejs\。我强烈建议你不要修改这个默认路径。原因有二第一这是Windows软件的标准安装位置便于管理第二很多教程、工具的预设配置都基于这个路径修改后可能会导致一些意想不到的配置问题。除非你的C盘空间实在紧张否则就让它待在默认位置。3. 手把手安装Node.js每一步的意图与验证下载好.msi文件后我们就可以开始安装了。整个过程虽然简单但我会告诉你每一步是在做什么。3.1 启动安装向导并同意协议双击下载好的.msi文件会弹出安装向导。第一个界面通常是欢迎信息和许可协议。没什么好说的勾选“I accept the terms in the License Agreement”我接受许可协议中的条款然后点击“Next”。3.2 选择安装路径与组件接下来是关键的一步选择安装路径和安装组件。安装路径如之前所说保持默认的C:\Program Files\nodejs\即可点击“Next”。自定义安装Custom Setup这里会列出要安装的组件通常包括Node.js runtime核心运行时必选。npm package managerNode.js的包管理器极其重要必选。它让你可以轻松安装和管理成千上万的第三方代码库包。Online documentation shortcuts在线文档快捷方式可选。Add to PATH这个选项至关重要它会把Node.js和npm的执行文件路径自动添加到系统的环境变量PATH中。必须勾选只有这样你才能在任意位置的命令行如CMD或PowerShell中直接输入node或npm命令来使用它们。确保npm package manager和Add to PATH是勾选状态然后点击“Next”。3.3 安装与完成接下来的界面可能会问你是否要安装用于编译本地模块的工具Tools for Native Modules对于新手可以先不勾选直接点击“Next”。如果需要以后可以通过npm单独安装。然后点击“Install”开始安装等待进度条走完。安装完成后点击“Finish”。这里有个重要操作关闭所有已经打开的命令行窗口CMD或PowerShell。因为环境变量的更新需要新开的命令行窗口才能生效。3.4 验证安装是否成功这是检验我们安装成果的时刻。我们需要打开一个新的命令行窗口来测试。打开命令行按下Win R键输入cmd或者powershell然后回车。我推荐使用 PowerShell因为它功能更强大。检查Node.js版本在打开的黑窗口里输入以下命令并按回车node -v如果安装成功你会看到类似v20.15.0这样的输出这就是你安装的Node.js版本号。检查npm版本接着输入npm -v如果成功你会看到类似10.7.0这样的npm版本号。恭喜如果你看到了正确的版本号那么Node.js的核心安装和环境变量配置就已经成功了。你已经拥有了在电脑上运行JavaScript代码的能力。注意如果输入上述命令后提示“不是内部或外部命令也不是可运行的程序”说明环境变量没有正确配置。这通常是因为安装时没有勾选“Add to PATH”或者你忘记关闭旧命令行窗口了。请重新运行安装程序选择“Repair”修复选项并确保勾选了“Add to PATH”。4. 理解核心概念Node.js、npm与npx安装成功只是第一步要真正“入门”你得理解这三个经常一起出现的名词到底是什么关系以及它们各自扮演什么角色。4.1 Node.js运行时与环境正如开头所说Node.js是一个JavaScript运行时环境。它不是你直接编写大量业务代码的地方而是为你写的JavaScript代码提供执行舞台。当你写了一个app.js文件里面用JavaScript写了服务器逻辑你需要用node app.js这个命令来告诉Node.js“嘿来运行一下这个文件里的代码”。Node.js会启动它的V8引擎读取、解析并执行你的代码。4.2 npm包管理器你的“代码仓库管理员”npm(Node Package Manager) 是随Node.js一同安装的包管理工具。你可以把它想象成一个巨大的、集中的“代码超市”或“仓库管理员”。有什么用世界上有数百万开发者写了各种各样的功能模块比如处理时间的moment、发送HTTP请求的axios、开发Web框架的express。这些模块都被发布到了npm的官方仓库。你怎么用当你的项目需要某个功能时你不需要自己从头写只需要在项目目录下打开命令行输入npm install axiosnpm就会自动从远程仓库下载axios这个包并把它放到你项目下的node_modules文件夹里同时更新一个叫package.json的文件来记录这个依赖。常用命令npm init -y快速初始化一个新的Node.js项目生成package.json文件项目的“身份证”和“说明书”。npm install package-name安装某个包到当前项目。npm install -g package-name全局安装某个包通常是一些命令行工具这样你可以在任何地方使用它。npm uninstall package-name卸载某个包。npm update更新所有包到最新版本。一个重要的目录node_modules。当你执行npm install后所有下载的包及其依赖的包都会存放在这个目录下。这个目录通常很大且层级很深千万不要手动去修改它里面的内容也不要把它上传到Git代码仓库。通常我们会通过在项目根目录创建一个.gitignore文件并在里面写上node_modules/来让Git忽略它。4.3 npx包执行器临时工的召唤术npx也是随npm一起安装的一个工具。它的作用是直接运行某个包提供的命令行工具而无需先全局安装这个包。这有什么用呢举个例子有一个非常流行的项目脚手架工具叫create-react-app用于快速创建React项目。如果没有npx你需要先全局安装它npm install -g create-react-app然后再运行create-react-app my-app。有了npx你可以一步到位npx create-react-app my-app。npx会做以下几件事检查本地项目或全局是否已经安装了create-react-app。如果没有它会去npm仓库临时下载这个包和它的依赖。执行这个包的命令。执行完毕后可以选择不保留这个临时下载的包默认行为。这对于运行那些你只需要偶尔用一次的工具比如脚手架、构建工具来说非常方便避免了全局安装太多包导致的环境污染和管理混乱。简单总结一下三者的关系Node.js是发动机让你能跑JavaScript代码npm是后勤部长帮你管理项目所需的所有第三方零件包npx是特种兵能快速调用一次性的工具用完即走。5. 配置npm与镜像加速告别龟速下载默认情况下npm会从国外的官方仓库下载包对于国内用户来说速度可能非常慢甚至经常超时失败。因此配置一个国内的镜像源是安装后的首要优化步骤。5.1 为什么要换源npm官方源服务器在国外网络延迟高。国内有很多机构提供了npm镜像它们定时从官方源同步数据你从国内镜像下载速度会快上几十倍甚至上百倍。常用的国内镜像有淘宝NPM镜像https://registry.npmmirror.com/腾讯云镜像https://mirrors.cloud.tencent.com/npm/华为云镜像https://repo.huaweicloud.com/repository/npm/5.2 如何配置镜像源有两种配置方式临时使用和永久设置。方式一临时使用单次命令在每次npm install命令后面加上--registry参数。npm install express --registryhttps://registry.npmmirror.com这种方式只对当前这条命令生效。方式二永久设置推荐通过命令行修改npm的全局配置一劳永逸。npm config set registry https://registry.npmmirror.com执行这条命令后你以后所有的npm install操作默认都会从这个淘宝镜像下载。验证是否设置成功可以运行以下命令查看当前的注册表地址。npm config get registry如果返回的是https://registry.npmmirror.com/说明配置成功。5.3 配置全局包安装路径可选但推荐默认情况下当你执行npm install -g package-name进行全局安装时包会被安装到Node.js安装目录下的一个特定文件夹。有时这个路径可能需要管理员权限才能写入可能导致安装失败。我们可以自定义一个全局安装路径并将其也加入系统环境变量这样管理起来更方便。在非系统盘比如D盘创建一个文件夹例如D:\nodejs\global_node_modules。在命令行中配置npm使用这个路径作为全局安装目录npm config set prefix D:\nodejs\global_node_modules将这个路径D:\nodejs\global_node_modules添加到系统的PATH环境变量中具体添加方法和安装Node.js时类似在系统属性-高级-环境变量中编辑用户或系统的PATH新增这一条即可。同样关闭所有命令行窗口再重新打开让环境变量生效。这样做的好处是全局安装的包都集中在你自己定义的目录下重装系统或升级Node.js时这个目录可以保留方便迁移。6. 实战创建并运行你的第一个Node.js程序理论说再多不如亲手跑一段代码。让我们来完成一个经典的“Hello World”并理解整个过程。6.1 创建项目目录与文件首先在你的电脑上找一个合适的地方比如桌面或文档文件夹新建一个文件夹命名为my-first-node-app。这个名字可以随意但建议用英文且不要有空格。然后在这个文件夹里新建一个文本文件将其重命名为app.js。注意文件扩展名必须是.js。6.2 编写代码用任何文本编辑器记事本、VS Code、Sublime Text等打开app.js文件输入以下代码// 引入Node.js内置的http模块这个模块可以用来创建HTTP服务器 const http require(http); // 创建一个HTTP服务器。当有请求到来时这个回调函数会被执行。 const server http.createServer((req, res) { // 设置HTTP响应头告诉浏览器返回的内容类型是纯文本字符编码是UTF-8 res.writeHead(200, { Content-Type: text/plain; charsetutf-8 }); // 向客户端比如浏览器发送响应体内容 res.end(你好Node.js世界这是我的第一个服务器。\n); }); // 告诉服务器监听3000端口。第二个参数是回调函数当服务器成功启动后执行。 server.listen(3000, () { console.log(服务器正在运行访问地址http://localhost:3000); });这段代码做了以下几件事require(http)加载Node.js核心模块http用于处理网络请求。http.createServer(...)创建一个服务器对象。传入的函数是一个“请求监听器”每当有HTTP请求发到这个服务器这个函数就会被调用。参数req代表请求信息res代表响应对象。res.writeHead设置HTTP响应的状态码200表示成功和响应头。res.end结束响应并发送一段文本给客户端。server.listen(3000, ...)启动服务器监听本机的3000端口。启动成功后在控制台打印一条消息。6.3 运行程序现在打开命令行CMD或PowerShell使用cd命令切换到你的app.js文件所在的目录。例如如果你的文件在桌面cd C:\Users\你的用户名\Desktop\my-first-node-app然后输入运行命令node app.js如果一切正常你会立刻看到命令行里输出了我们预设的提示信息服务器正在运行访问地址http://localhost:3000。注意此时命令行窗口会“卡住”因为Node.js进程正在持续运行监听网络请求这是正常现象。6.4 测试与停止测试打开你的浏览器比如Chrome、Edge在地址栏输入http://localhost:3000并访问。你应该能看到页面上显示着“你好Node.js世界这是我的第一个服务器。” 恭喜你你的第一个Node.js服务器程序成功运行了停止服务器回到运行着node app.js的命令行窗口按下快捷键Ctrl C。这会向Node.js进程发送一个中断信号服务器就会停止运行命令行也会恢复可输入状态。这一步的意义你不仅仅是在运行一段脚本你实际上启动了一个真正的、可以处理网络请求的HTTP服务器。这标志着你的JavaScript代码已经从浏览器端走向了服务器端这是一个质的飞跃。7. 使用npm初始化项目并管理依赖一个真实的Node.js项目绝不会只有一个孤零零的.js文件。它通常会有清晰的结构和对外部库的依赖。让我们用npm来初始化一个标准的项目。7.1 初始化项目生成package.json在my-first-node-app目录下确保之前的服务器已经用CtrlC停止了打开命令行运行npm init -y这个-y参数表示“全部接受默认选项”快速生成。执行成功后你会看到目录下多了一个package.json文件。用编辑器打开这个文件它大概长这样{ name: my-first-node-app, version: 1.0.0, description: , main: app.js, scripts: { test: echo \Error: no test specified\ exit 1 }, keywords: [], author: , license: ISC }这个文件是你的项目的“元数据”文件非常重要。它记录了name: 项目名称。version: 项目版本。main: 项目的入口文件默认是index.js因为我们创建的是app.js你可以手动把它改成app.js。scripts: 可以在这里定义一些快捷命令脚本。例如我们可以把启动服务器的命令定义在这里。7.2 修改package.json添加启动脚本让我们修改scripts部分添加一个自定义的启动命令。将package.json中的scripts修改为scripts: { test: echo \Error: no test specified\ exit 1, start: node app.js },保存文件。现在在项目目录下你不再需要输入node app.js来启动服务器了只需要输入npm startnpm会去package.json里找到scripts中对应的start命令并执行它。效果和直接运行node app.js完全一样。这样做的好处是命令更统一、更易记尤其是当启动命令很复杂时比如需要带一堆参数。7.3 安装并使用第三方包以Express为例让我们给这个简单的服务器加点“料”安装一个最流行的Node.js Web框架——Express来感受一下npm管理依赖的威力。安装Express在项目目录下运行npm install express你会看到命令行开始下载并在项目目录下自动创建了node_modules文件夹里面就是express及其所有依赖和一个package-lock.json文件用于锁定依赖的确切版本确保团队协作时大家环境一致。同时package.json里会自动增加一个dependencies字段里面记录了express及其版本。修改代码使用Express将app.js的内容替换为以下更简洁的Express版本// 引入express模块 const express require(express); // 创建一个express应用实例 const app express(); const port 3000; // 定义一个路由当访问网站根路径时返回信息 app.get(/, (req, res) { res.send(你好Express这个响应比原生http模块简洁多了。); }); // 启动服务器监听3000端口 app.listen(port, () { console.log(Express服务器正在运行访问地址http://localhost:${port}); });运行在命令行输入npm start。然后用浏览器访问http://localhost:3000你会看到新的欢迎信息。通过这个简单的例子你体验了从原生Node.js到使用流行框架的升级。更重要的是你实践了npm的核心工作流npm init初始化项目 -npm install package安装依赖 - 在代码中require引入并使用。这是所有现代Node.js项目开发的基础。8. 进阶配置与常见问题排坑指南环境搭好了第一个程序也跑了但实际开发中总会遇到些“坑”。这里我总结几个新手高频问题及其解决方案。8.1 权限问题安装全局包时出现EACCES错误在Mac或Linux系统或者Windows上某些特定目录下当你运行npm install -g package时可能会遇到权限错误提示EACCES: permission denied。解决方案推荐 使用Node.js自带的工具npm来修复自己的安装权限或者使用系统包管理器如macOS的Homebrew安装Node.js它们会处理好权限。对于Windows用户如果安装在默认路径且勾选了“Add to PATH”通常不会遇到此问题。如果遇到可以尝试以管理员身份运行命令行CMD或PowerShell。更推荐按照第5.3节的方法配置一个你有完全读写权限的自定义全局安装路径。8.2 版本管理与切换使用nvm随着学习深入你可能会遇到不同的项目需要不同版本的Node.js。直接在电脑上安装多个版本并手动切换非常麻烦。这时就需要nvm (Node Version Manager)一个Node.js版本管理工具。注意nvm在Windows上有一个独立的移植版本叫nvm-windows。在安装nvm-windows之前你必须彻底卸载已安装的Node.js否则会有冲突。卸载现有Node.js通过控制面板的“程序和功能”找到Node.js并卸载。下载nvm-windows去GitHub搜索nvm-windows下载最新的安装包.exe文件。安装nvm-windows安装过程会提示你设置Node.js和npm的安装路径可以保持默认。使用nvm安装指定版本的Node.jsnvm install 18.19.0(安装v18.19.0)列出所有已安装版本nvm list切换使用某个版本nvm use 18.19.0设置默认版本nvm alias default 18.19.0使用nvm后你可以轻松地在不同项目间切换Node.js版本非常方便。8.3 环境变量配置失败或未生效这是Windows用户最常见的问题之一。症状是命令行里输入node或npm提示“不是内部或外部命令”。排查步骤确认安装路径首先找到Node.js的安装目录默认是C:\Program Files\nodejs\。进入这个目录看看里面是否有node.exe和npm.cmd等文件。检查环境变量右键“此电脑” - “属性” - “高级系统设置” - “环境变量”。在“系统变量”或“用户变量”中找到Path变量双击编辑。查看列表中是否包含Node.js的安装路径C:\Program Files\nodejs\以及npm的全局安装路径如果你自定义过。注意路径之间用英文分号;隔开。修复如果路径缺失手动添加进去。如果路径存在可能是顺序问题可以尝试将其上移到靠前位置。修改环境变量后必须关闭所有已有的命令行窗口重新打开一个新的变量才会生效。终极方案如果还是不行重新运行Node.js安装程序选择“Repair”修复选项并确保安装过程中勾选了“Add to PATH”。8.4 项目依赖安装缓慢或失败即使换了淘宝源有时安装某些包含大量依赖或特殊资源的包比如涉及C编译的node-sass时仍然可能很慢或失败。解决方案检查网络和镜像源再次运行npm config get registry确认源是淘宝镜像。清理npm缓存有时候缓存损坏会导致问题。运行npm cache clean --force清理缓存然后重试安装。使用yarn或pnpm它们是另两个流行的包管理工具在某些场景下可能比npm更快、更高效。你可以通过npm install -g yarn或npm install -g pnpm来安装它们然后在项目中使用yarn install或pnpm install来代替npm install。它们有自己独立的缓存和依赖管理机制。耐心等待或分段安装对于超大型项目依赖安装可能需要很长时间。可以尝试先安装核心依赖再安装其他。8.5 代码修改后服务器没有自动重启在开发过程中每次修改app.js代码后都需要手动CtrlC停止服务器然后再运行npm start重启非常麻烦。解决方案使用NodemonNodemon是一个工具它会监视你项目中的文件变化并自动重启Node.js应用。全局安装npm install -g nodemon修改启动脚本在package.json的scripts中将start命令改为使用nodemonscripts: { start: nodemon app.js },运行现在执行npm startNodemon会启动并监视文件。当你修改并保存app.js后你会看到命令行里Nodemon自动重启了应用无需你手动操作。这极大地提升了开发效率。走到这里你已经完成了从零到一的Node.js环境搭建理解了核心概念运行了第一个服务器程序学会了用npm管理项目并且知道如何应对常见的开发问题。这个环境将成为你学习现代Web开发无论是前端框架如Vue/React还是后端服务的坚实基石。接下来你可以尝试用Express搭建更复杂的REST API或者学习如何使用数据库真正开始你的Node.js开发之旅。记住编程最好的学习方式就是不断地动手去写去试错然后解决问题。