Skip to content

入门

⏱️最后更新: 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 环境

picture 0

配置 node 环境

2 创建一个简单的 Node.js 项目

2.1 创建一个空目录

用 vscode 打开,启动终端 执行项目初始化命令:

bash
npm init -y

picture 1

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.jsonscripts字段可自定义命令,方便运行项目。例如:

  • 添加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 picture 6

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 # 项目配置