如何用 Node.js 搭建一个简单的 Web 服务器
Node.js 内置 http 模块即可创建 Web 服务器:http.createServer((req,res)=>{...}).listen(3000),无需安装任何依赖。开发调试静态文件还可用 npx serve 或 npx http-server 一条命令起服务。
Node.js 内置的 http 模块就能起 Web 服务器,不用装任何依赖:http.createServer() 传入请求处理函数,再 listen() 指定端口即可。下面是一个最小示例,保存为 server.js 后执行 node server.js,访问 http://localhost:3000 就能看到响应。
最小 HTTP 服务器
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('你好,这是一个 Node.js 服务器!');
});
const port = 3000;
server.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}/`);
});
要点:writeHead 设置状态码和响应头(返回中文记得加 charset=utf-8),res.end() 结束响应。回调里的 req 可以拿到请求方法、URL 和请求头,据此可做简单路由。
加一点路由
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.end('首页');
} else if (req.url === '/api/time') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ now: new Date().toISOString() }));
} else {
res.writeHead(404);
res.end('Not Found');
}
});
只想快速serve静态文件?
npx serve . # 或
npx http-server -p 8080
适合本地预览静态站点,不用自己写代码。
生产环境注意
原生 http 适合学习和极小场景;正式项目建议用 Express/Fastify 等框架处理路由、中间件和错误。上线时前面再挡一层 Nginx 做反向代理和 TLS 终止,Node 进程用 pm2 或 systemd 守护。
常见问题(FAQ)
Q:启动报 EADDRINUSE 怎么办?
端口被占用。用 lsof -i :3000 找到占用进程并结束,或换一个端口。
Q:怎么监听所有网卡(让局域网访问)?
server.listen(3000, '0.0.0.0')。默认就是监听所有接口,指定 'localhost' 则只允许本机访问。
Q:支持 HTTPS 吗?
内置 https 模块支持,但需要证书:https.createServer({ key, cert }, handler)。本地开发可用 mkcert 生成自签证书。