入门
⏱️最后更新: 2025/07/27
创建一个基础的 nodejs 项目
markdown
- win10 + vscode + node
- Node.js 从 v12.0.0 开始实验性支持 ESM,v16.0.0 后稳定支持
- 采用 ES Modules(ECMAScript Module),以下二选一
- package.json 添加 "type":"module"
- 文件后缀改为"mjs"
- 项目入口文件 index.mjs
node.js 官网
package.json@node.js
package.json@npm
1 检查 nodejs 环境
2 创建一个简单的 Node.js 项目
2.1 创建一个空目录
用 vscode 打开,启动终端 执行项目初始化命令:
bash
npm init -y
2.2 编辑 package.json
markdown
- 启用 ES Modules : 配置关键字 "type": "module"
- 入口文件由 `*.js` 改为 `*.mjs`
json
{
"name": "nodejs_demo",
"version": "1.0.0",
"type": "module",
"main": "index.mjs",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": ""
}
2.3 安装依赖
安装 express 用于搭建服务器
bash
npm install express
安装 nodemon 用于开发时热更新
bash
npm install nodemon --save-dev
安装 dotenv 加载.env 文件工具
bash
npm install dotenv --save
2.4 创建 env 文件
在项目根目录创建 .env
# .env文件内容(键值对格式,#为注释)
PORT=4000 # 端口(可根据需要修改,如4000、8080)
# 其他环境变量(示例):
# DB_HOST=localhost
# DB_PORT=27017
# API_KEY=your-api-key
INFO
- .env 文件必须放在项目根目录(与 package.json 同级),否则 dotenv 无法默认找到. 若需指定路径,可使用 dotenv.config({ path: '.env.development' }))。
- .env 文件中的变量均为字符串类型,若需将端口转换为数字,可使用 parseInt
2.5 编写入口文件
在项目根目录创建 index.mjs
(与 package.json 中的 main 字段一致)
基础内容如下所示
js
// 加载.env文件(必须在所有import之前)
import dotenv from "dotenv";
dotenv.config(); // 关键:注入.env变量到process.env
import express from "express";
const app = express();
// 从process.env获取端口(同上)
// 确保端口是数字(避免字符串导致的错误)
const port = parseInt(process.env.PORT, 10) || 3000;
app.get("/", (req, res) => {
res.send("Hello from .env (ES Modules)!");
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
2.6 设置启动脚本
package.json
的scripts
字段可自定义命令,方便运行项目。例如:
- 添加
start
命令(运行项目):
json
"scripts": {
"start": "node index.js",// 生产环境启动(用node执行index.js)
"dev": "nodemon index.js"// 开发环境启动(用nodemon热更新)
}
2.7 启动项目
执行命令
bash
npm run dev
确认 env 环境是否生效 查看控制台输出:若.env 中设置 PORT=4000,则输出 Server running on port 4000;若.env 中未设置 PORT,则输出默认值 3000
3 项目升级
markdown
基于简单的项目进行以下升级
-
3.1 目录设计
markdown
esm-node-project/
├── src/
│ ├── index.js # 入口文件(启动服务器、配置中间件)
│ ├── routes/ # 路由模块(定义接口路径)
│ │ └── userRoutes.js # 用户路由
│ ├── controllers/ # 控制器模块(处理请求/响应逻辑)
│ │ └── userController.js
│ ├── services/ # 服务模块(处理业务逻辑,与数据层交互)
│ │ └── userService.js
│ ├── utils/ # 工具模块(通用函数,如日期格式化、错误处理)
│ │ └── formatDate.js
│ └── middlewares/ # 中间件模块(全局/局部中间件)
│ └── errorHandler.js
├── .env # 环境变量配置
├── .gitignore # 忽略文件(如 node_modules、.env)
└── package.json # 项目配置