单元三 做一个网络服务 · 第 11 课
运行环境:让程序跑起来
这一课你会运行人生中第一个服务器:它只会说一句“你好”,但它真的在等待访问、回应请求。
本课目标
- 装好 Node.js,知道它是做什么的。
- 让 AI 写一个最小的网页服务器。
- 学会启动、访问、停止服务器,以及处理“端口被占用”。
先懂概念:程序和运行环境
我们的周报助手会用 JavaScript 语言来写。JavaScript 程序需要一个“引擎”来运行,这个引擎就是 Node.js,就像 Word 文档要用 Word 打开一样。
Node.js 自带一个软件下载工具 npm,以后可以用它安装别人写好的功能。这门课的项目特意不依赖任何第三方软件,只用 Node.js 自带的功能,减少出错的机会。
跟着做
1. 安装 Node.js
先看看有没有装过:
node --version显示 v20 或更高的版本号就可以跳过这一步。否则按第 5 课“下载失败怎么办”里的方法安装 Node.js LTS 版,Windows 用户也别忘了那里的 Set-ExecutionPolicy 设置。装好后重开终端再检查一次。
2. 新建项目文件夹
cd ~/ai-course
mkdir weekly-report
cd weekly-report
git init这个文件夹就是毕业项目“AI 周报助手”的家,后面几课都在这里进行。
3. 让 AI 写一个最小的服务器
codex发出需求:
请在当前文件夹创建 hello.js:一个只用 Node.js 自带模块的网页服务器。
- 只监听 127.0.0.1,只允许本机访问。
- 监听的端口从环境变量 PORT 读取,没有设置时用 3000。
- 访问首页时显示“你好,这是我的第一个服务器”,注意设置 UTF-8 编码,中文不能乱码。
- 启动时在终端打印访问地址。
- 不要安装任何依赖。
写完告诉我怎么运行。它写完后,用 /quit 退出 Codex。
4. 启动服务器
node hello.js终端会打印一行地址,然后停在那里不动。这不是卡住了:服务器就是这样一直开着、等待访问的,这个终端窗口被它占用了。
如果 Windows 弹出“Windows 安全中心”的防火墙提示,说明程序监听了所有网卡,局域网里的其他电脑也可能访问到它。点“取消”,然后让 AI 改成只监听 127.0.0.1。
5. 访问它
打开浏览器,访问 http://localhost:3000,看到那句“你好”。
再打开第二个终端窗口,用 curl 访问:
curl.exe http://localhost:3000curl http://localhost:3000一个终端运行服务器,另一个终端做别的事,这是开发时的常见姿势。
6. 停止服务器
回到运行服务器的那个终端,按 Ctrl + C。服务器停了,提示符回来了。这时再刷新浏览器,会显示“无法访问此网站”。
7. 换个端口启动
hello.js 支持用环境变量 PORT 指定端口,正好复习第 6 课的临时环境变量:
$env:PORT = "3001"
node hello.jsPORT=3001 node hello.js访问 http://localhost:3001。PowerShell 设置的 PORT 会一直留在这个终端里,试完关掉这个终端即可。
8. 存档
先在运行服务器的终端按 Ctrl + C 停止它。如果你按上一步的做法关掉了终端,新开的终端会在家目录,先回到项目文件夹:
cd ~/ai-course/weekly-report
git add -A
git commit -m "第一个服务器"你应该看到
浏览器和 curl 都显示“你好,这是我的第一个服务器”;按 Ctrl + C 后服务器停止,网页无法访问。
常见问题
报错 EADDRINUSE? 意思是端口已经被占用了,通常是另一个终端里的服务器还开着。找到那个终端按 Ctrl + C,或者换一个端口启动。
浏览器显示乱码? 让 AI 检查响应头里有没有 charset=utf-8。
浏览器显示“无法访问此网站”? 确认服务器的终端还开着、没有报错,地址和端口与终端里打印的一致。
自检
-
node --version显示 20 或更高。 - 我能启动服务器,并在浏览器里访问它。
- 我知道服务器运行时终端会被占用,用
Ctrl + C停止。 - 我知道
EADDRINUSE是端口被占用。