# Node.js 5 **Repository Path**: shou21/node.js-5 ## Basic Information - **Project Name**: Node.js 5 - **Description**: 完成 实验五 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-17 - **Last Updated**: 2026-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartTodo 后端使用文档 本仓库是 SmartTodo 的后端服务,基于 Express、Sequelize、MySQL、JWT 实现用户登录注册、个人信息、头像上传和 Todo 任务管理。 配套前端仓库: ```txt https://gitee.com/shou21/node.js-frontend.git ``` ## 环境要求 - Node.js 18 或以上 - npm - MySQL 8.x ## 1. 克隆项目 ```bash git clone https://gitee.com/shou21/node.js-5.git cd node.js-5 ``` ## 2. 安装依赖 ```bash npm install ``` ## 3. 配置数据库 先在 MySQL 中创建数据库: ```sql CREATE DATABASE IF NOT EXISTS smarttodo DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; ``` 复制环境变量文件: ```bash cp .env.example .env ``` Windows PowerShell 可以使用: ```powershell copy .env.example .env ``` 根据自己电脑的 MySQL 配置修改 `.env`: ```env PORT=3000 JWT_SECRET=smarttodo_jwt_secret JWT_EXPIRES_IN=2h DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=你的MySQL密码 DB_NAME=smarttodo ``` 如果你的 MySQL root 用户没有密码,`DB_PASSWORD` 留空即可: ```env DB_PASSWORD= ``` ## 4. 启动后端 开发启动: ```bash npm run dev ``` 普通启动: ```bash npm start ``` 启动成功后会看到: ```txt Database connected (MySQL) Tables synced smarttodo-server running at http://localhost:3000 ``` 访问下面地址验证: ```txt http://localhost:3000 ``` 正常返回: ```json { "code": 200, "message": "SmartTodo API is running", "data": null } ``` ## 5. 本机中文路径下启动 MySQL 的注意事项 如果你使用的是仓库里的 `mysql-data` 数据目录,并且项目路径包含中文,例如: ```txt D:\1前端\课程\Web前端开发\作业\node.js-5 ``` 不要用完整路径启动 MySQL,否则可能出现路径解析错误。应先进入后端目录,再使用相对路径: Git Bash: ```bash cd "/d/1前端/课程/Web前端开发/作业/node.js-5" "/c/Program Files/MySQL/MySQL Server 8.4/bin/mysqld.exe" --datadir=./mysql-data --port=3306 --console ``` PowerShell: ```powershell cd "D:\1前端\课程\Web前端开发\作业\node.js-5" & "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld.exe" --datadir=.\mysql-data --port=3306 --console ``` 如果报错 `ibdata1 must be writable`,通常说明 MySQL 已经启动过了。先检查端口: ```bash netstat -ano | grep 3306 ``` 关闭对应 PID: ```bash taskkill //PID 进程ID //F ``` PowerShell: ```powershell Stop-Process -Id 进程ID ``` ## API 地址 ```txt POST /api/auth/register POST /api/auth/login GET /api/auth/profile PUT /api/auth/profile POST /api/auth/avatar GET /api/todos POST /api/todos PUT /api/todos/:id DELETE /api/todos/:id PATCH /api/todos/:id/toggle ``` Todo 查询支持: ```txt GET /api/todos?status=all|active|completed&sort=priority|createdAt|deadline ``` ## 常见问题 `ECONNREFUSED 3306` MySQL 没有启动,或者 `.env` 中的 `DB_HOST`、`DB_PORT` 不正确。 `Access denied for user 'root'@'localhost'` MySQL 用户名或密码错误,检查 `.env` 中的 `DB_USER` 和 `DB_PASSWORD`。 `Unknown database 'smarttodo'` 数据库还没有创建,先执行本文第 3 步中的 `CREATE DATABASE`。 `EADDRINUSE: address already in use :::3000` 3000 端口已经被其他后端进程占用,关闭旧进程后重新启动。