设置 Node 开发环境
既然你已经了解了 Express 的用途,我们将向你展示如何在 Windows、Linux (Ubuntu) 或 macOS 上设置和测试 Node/Express 开发环境。对于所有这些操作系统,本文提供了开始开发 Express 应用所需的一切。
| 预备知识 | 了解如何打开终端/命令行。了解如何在开发计算机的操作系统上安装软件包。 |
|---|---|
| 目标 | 在你的计算机上设置 Express 开发环境。 |
Express 开发环境概述
Node 和 Express 使设置你的计算机以开始开发 Web 应用程序变得非常容易。本节概述了所需的工具,解释了在 Ubuntu、macOS 和 Windows 上安装 Node(和 Express)的一些最简单的方法,并展示了如何测试你的安装。
什么是 Express 开发环境?
Express 开发环境包括在你本地计算机上安装 Nodejs、npm 包管理器 和(可选的)Express 应用程序生成器。
Node 和 npm 包管理器通过预编译的二进制包、安装程序、操作系统包管理器或从源代码(如下节所示)一起安装。然后,Express 通过 npm 作为你的各个 Express Web 应用程序的依赖项(以及其他库,如模板引擎、数据库驱动程序、身份验证中间件、用于提供静态文件的中间件等)进行安装。
npm 还可以用于(全局)安装 Express 应用程序生成器,这是一个方便的工具,用于创建遵循 MVC 模式的骨架 Express Web 应用程序。应用程序生成器是可选的,因为你不需要使用此工具来创建使用 Express 的应用程序,或者构建具有相同架构布局或依赖项的 Express 应用程序。但是,我们将使用它,因为它使入门变得更容易,并促进了模块化的应用程序结构。
注意:与其他一些 Web 框架不同,开发环境不包含单独的开发 Web 服务器。在 Node/Express 中,Web 应用程序创建并运行自己的 Web 服务器!
典型的开发环境中还有其他外围工具,包括用于编辑代码的文本编辑器或 IDE,以及用于安全管理代码不同版本的Git 等源代码管理工具。我们假设你已经安装了这些类型的工具(特别是文本编辑器)。
支持哪些操作系统?
Node 可以在 Windows、macOS、多种 Linux 发行版、Docker 等上运行。Node.js 下载页面上有完整列表。几乎任何个人电脑都应该具备在开发过程中运行 Node 所需的性能。Express 在 Node 环境中运行,因此可以在任何运行 Node 的平台上运行。
本文提供了 Windows、macOS 和 Ubuntu Linux 的设置说明。
你应该使用哪个版本的 Node/Express?
Node 有许多版本——较新的版本包含错误修复、支持最新版本的 ECMAScript (JavaScript) 标准,以及 Node API 的改进。
通常你应该使用最新的 LTS(长期支持) 版本,因为它会比“当前”版本更稳定,同时仍然具有相对较新的功能(并且仍在积极维护中)。如果你需要 LTS 版本中不存在的功能,则应该使用 Current 版本。
对于 Express,你应该使用 Node 的最新 LTS 版本。
数据库和其他依赖项呢?
其他依赖项,例如数据库驱动程序、模板引擎、身份验证引擎等,是应用程序的一部分,并使用 npm 包管理器导入到应用程序环境中。我们将在以后的特定于应用程序的文章中讨论它们。
安装 Node
为了使用 Express,你必须在你的操作系统上安装 Nodejs 和 Node 包管理器 (npm)。为了简化此过程,我们将首先安装一个 Node 版本管理器,然后使用它来安装最新长期支持 (LTS) 版本的 Node 和 npm。
注意:你也可以使用 https://node.org.cn/en/ 上提供的安装程序安装 Nodejs 和 npm(选择下载“推荐给大多数用户”的 LTS 版本按钮),或者你可以使用操作系统的包管理器安装 (nodejs.org)。我们强烈建议使用 Node 版本管理器,因为它们可以更轻松地安装、升级和切换任何特定版本的 Node 和 npm。
Windows
Windows 有许多 Node 版本管理器。这里我们使用 nvm-windows,它在 Node 开发者中备受推崇。
从 nvm-windows/releases 页面使用你选择的安装程序安装最新版本。nvm-windows 安装完成后,打开命令提示符(或 PowerShell)并输入以下命令以下载最新 LTS 版本的 Nodejs 和 npm
nvm install lts
在撰写本文时,Nodejs 的 LTS 版本是 22.17.0。你可以使用以下命令将其设置为要使用的当前版本
nvm use 22.17.0
注意:如果出现“Access Denied”警告,你需要在具有管理权限的提示符中运行此命令。
使用命令 nvm --help 查找其他命令行选项,例如列出所有可用的 Node 版本和所有已下载的 NVM 版本。
Ubuntu 和 macOS
Ubuntu 和 macOS 有许多 Node 版本管理器。nvm 是其中一个更受欢迎的,并且是 nvm-windows 所基于的原始版本。请参阅 nvm > 安装和更新脚本以获取在终端中安装最新版 nvm 的说明。
nvm 安装完成后,打开终端并输入以下命令以下载最新 LTS 版本的 Nodejs 和 npm
nvm install --lts
在撰写本文时,Nodejs 的 LTS 版本是 22.17.0。命令 nvm list 显示已下载的版本集和当前版本。你可以使用以下命令将特定版本设置为当前版本(与 nvm-windows 相同)
nvm use 22.17.0
使用命令 nvm --help 查找其他命令行选项。这些选项通常与 nvm-windows 提供的选项相似或相同。
测试你的 Nodejs 和 npm 安装
一旦你将 nvm 设置为使用特定的 Node 版本,你就可以测试安装了。一个很好的方法是在终端/命令提示符中使用“version”命令,并检查是否返回了预期的版本字符串
> node -v
v22.17.0
Nodejs 包管理器 npm 也应该已经安装,并且可以用相同的方式进行测试
> npm -v
10.9.2
作为一个稍微更有趣的测试,让我们创建一个非常基本的“纯 Node”服务器,当你访问浏览器中的正确 URL 时,它会在浏览器中打印“Hello World”
-
将以下文本复制到一个名为 hellonode.js 的文件中。这使用纯 Node 功能(不包含 Express 的任何内容)
js// Load HTTP module const http = require("http"); const hostname = "127.0.0.1"; const port = 3000; // Create HTTP server and listen on port 3000 for requests const server = http.createServer((req, res) => { // Set the response HTTP header with HTTP status and Content type res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end("Hello World\n"); }); // Listen for request on port 3000, and as a callback function have the port listened on logged server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });代码导入了“http”模块,并使用它创建了一个服务器(
createServer()),该服务器在端口 3000 上监听 HTTP 请求。然后,脚本会向控制台打印一条消息,说明你可以使用哪个浏览器 URL 来测试服务器。createServer()函数接受一个回调函数作为参数,该函数将在收到 HTTP 请求时调用——它返回一个 HTTP 状态码为 200(“OK”)和纯文本“Hello World”的响应。注意:如果现在还不完全理解这段代码在做什么,也不用担心!我们将在开始使用 Express 后更详细地解释我们的代码!
-
通过在命令提示符中导航到与
hellonode.js文件相同的目录,并调用node以及脚本名称来启动服务器,如下所示bashnode hellonode.js服务器启动后,你将看到控制台输出,指示服务器运行的 IP 地址
Server running at http://127.0.0.1:3000/
-
导航到 URL
http://127.0.0.1:3000。如果一切正常,浏览器应该显示字符串“Hello World”。
使用 npm
除了 Node 本身,npm 是使用 Node 应用程序最重要的工具。npm 用于获取应用程序开发、测试和/或生产所需的任何包(JavaScript 库),也可以用于运行开发过程中使用的测试和工具。
注意:从 Node 的角度来看,Express 只是另一个你需要使用 npm 安装并在自己的代码中引用的包。
你可以手动使用 npm 单独获取每个所需的包。通常,我们 instead 使用名为 package.json 的纯文本定义文件来管理依赖项。此文件列出了特定 JavaScript“包”的所有依赖项,包括包的名称、版本、描述、要执行的初始文件、生产依赖项、开发依赖项、可以使用的 Node 版本等。package.json 文件应包含 npm 获取和运行你的应用程序所需的一切(如果你正在编写一个可重用库,你可以使用此定义将你的包上传到 npm 仓库并供其他用户使用)。
添加依赖项
以下步骤展示了如何使用 npm 下载包,将其保存到项目依赖项中,然后在 Node 应用程序中引用它。
注意:这里我们展示了获取和安装 Express 包的说明。稍后我们将展示如何使用 Express Application Generator 为我们指定此包和其他包。提供本节是因为理解 npm 的工作原理以及应用程序生成器创建了什么很有用。
-
首先为你的新应用程序创建一个目录并导航到它
bashmkdir myapp cd myapp -
使用 npm
init命令为你的应用程序创建 package.json 文件。此命令会提示你输入许多信息,包括应用程序的名称和版本以及初始入口文件(默认为 index.js)的名称。现在,只需接受默认值即可bashnpm init如果你显示 package.json 文件 (
cat package.json),你将看到你接受的默认值,以许可证结尾。json{ "name": "myapp", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "description": "" } -
现在在
myapp目录中安装 Express,并将其保存在你的 package.json 文件的依赖项列表中bashnpm install express你的 package.json 的依赖项部分现在将出现在 package.json 文件的末尾,并将包含 Express。
json{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^5.1.0" } } -
要使用 Express 库,你需要在 index.js 文件中调用
require()函数以将其包含在你的应用程序中。现在在“myapp”应用程序目录的根目录中创建此文件,并为其提供以下内容jsconst express = require("express"); const app = express(); const port = 3000; app.get("/", (req, res) => { res.send("Hello World!"); }); app.listen(port, () => { console.log(`Example app listening on port ${port}!`); });这段代码展示了一个最小的“HelloWorld”Express Web 应用程序。它使用
require()导入“express”模块,并用它来创建一个服务器(app),该服务器在端口 3000 上监听 HTTP 请求,并向控制台打印一条消息,解释你可以使用哪个浏览器 URL 来测试服务器。app.get()函数只响应带有指定 URL 路径 ('/') 的 HTTPGET请求,在这种情况下,它会调用一个函数来发送我们的 Hello World! 消息。注意:
`Example app listening on port ${port}!`中的反引号允许我们将$port的值插入到字符串中。 -
你可以通过在命令提示符中调用带有脚本的 Node 来启动服务器
bashnode index.js你将看到以下控制台输出
Example app listening on port 3000
-
导航到 URL
https://:3000/。如果一切正常,浏览器应该显示字符串“Hello World!”。
开发依赖项
如果依赖项仅在开发期间使用,则应将其保存为“开发依赖项”(这样你的包用户在生产环境中就不必安装它)。例如,要使用流行的 JavaScript Linting 工具 ESLint,你可以按如下方式调用 npm
npm install eslint --save-dev
然后,以下条目将添加到你的应用程序的 package.json 中
{
"devDependencies": {
"eslint": "^9.30.1"
}
}
注意:“Linter”是执行软件静态分析的工具,用于识别和报告是否遵循某些编码最佳实践。
运行任务
除了定义和获取依赖项之外,你还可以在 package.json 文件中定义命名脚本,并调用 npm 使用 run-script 命令执行它们。这种方法通常用于自动化运行测试和开发或构建工具链的一部分(例如,运行工具来缩小 JavaScript、压缩图像、LINT/分析你的代码等)。
例如,要定义一个脚本来运行我们在上一节中指定的 eslint 开发依赖项,我们可以将以下脚本块添加到我们的 package.json 文件中(假设我们的应用程序源代码在文件夹 /src/js 中)
{
"scripts": {
// …
"lint": "eslint src/js"
// …
}
}
进一步解释一下,eslint src/js 是我们可以在终端/命令行中输入的命令,用于对应用程序目录中 src/js 目录下的 JavaScript 文件运行 eslint。将上述内容包含在应用程序的 package.json 文件中,为该命令 lint 提供了一个快捷方式。
然后我们可以通过调用 npm 来运行 eslint
npm run-script lint
# OR (using the alias)
npm run lint
这个示例可能看起来并不比原始命令短,但你可以在 npm 脚本中包含更大的命令,包括多个命令链。你可以识别一个 npm 脚本,一次运行所有测试。
安装 Express 应用程序生成器
Express 应用程序生成器工具生成一个 Express 应用程序“骨架”。使用 npm 安装生成器,如下所示
npm install express-generator -g
注意:在 Ubuntu 或 macOS 上,你可能需要在这一行前面加上 sudo。-g 标志全局安装该工具,以便你可以在任何地方调用它。
要使用默认设置创建名为“helloworld”的 Express 应用程序,请导航到要创建它的位置并按如下方式运行该应用程序
express helloworld
注意:除非你使用的是旧版 Nodejs(< 8.2.0),否则你可以跳过安装,直接使用 npx 运行 express-generator。这与安装然后运行 express-generator 具有相同的效果,但不会在你的系统上安装该包
npx express-generator helloworld
你还可以指定要使用的模板库和许多其他设置。使用 help 命令查看所有选项
express --help
生成器将在你当前位置的子文件夹中创建新的 Express 应用程序,并在控制台上显示构建进度。完成后,该工具将显示你需要输入的命令以安装 Node 依赖项并启动应用程序。
新应用程序的根目录中将有一个 package.json 文件。你可以打开它查看安装了哪些依赖项,包括 Express 和模板库 Jade
{
"name": "helloworld",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"morgan": "~1.9.1"
}
}
使用 npm 安装 helloworld 应用程序的所有依赖项,如下所示
cd helloworld
npm install
然后运行应用程序(Windows 和 Linux/macOS 的命令略有不同),如下所示
# Run helloworld on Windows with Command Prompt
SET DEBUG=helloworld:* & npm start
# Run helloworld on Windows with PowerShell
SET DEBUG=helloworld:* | npm start
# Run helloworld on Linux/macOS
DEBUG=helloworld:* npm start
DEBUG 命令会创建有用的日志记录,导致如下输出
>SET DEBUG=helloworld:* & npm start
> helloworld@0.0.0 start D:\GitHub\express-tests\helloworld
> node ./bin/www
helloworld:server Listening on port 3000 +0ms
打开浏览器并导航到 https://:3000/ 以查看默认的 Express 欢迎页面。

当我们撰写生成骨架应用程序的文章时,我们将更多地讨论生成的应用程序。
总结
你现在已经拥有一个在你的计算机上运行的 Node 开发环境,可以用于创建 Express Web 应用程序。你还了解了如何使用 npm 将 Express 导入应用程序,以及如何使用 Express 应用程序生成器工具创建应用程序并运行它们。
在下一篇文章中,我们将开始通过教程使用此环境和相关工具构建一个完整的 Web 应用程序。
另见
- 下载页面 (nodejs.org)
- 安装 Express (expressjs.com)
- Express 应用程序生成器 (expressjs.com)
- 在 Windows Subsystem for Linux 中使用 Node.js (docs.microsoft.com)