一个基于 Node.js + TypeScript + Prisma 的后端服务项目,支持文件上传、用户管理、AI聊天等功能。
- Node.js >= 16.0.0
- MySQL 数据库
- pnpm(推荐)或 npm
pnpm install复制并配置主环境变量文件:
cp .env.example .env编辑 .env 文件,配置数据库连接等基础信息:
# 数据库连接
DATABASE_URL="mysql://username:password@localhost:3306/database_name"
# 服务器配置
BASE_URL="http://localhost:3000"
# 默认密码(已加密)
DEFAULT_PASSWORD="$2a$10$XhLYUx71gN8lnXBpD33k6Og15FE5ojbzTiK9KnqPupmRhfuAXCJMW"
# AI API 密钥
ARK_API_KEY="your-ark-api-key"
ZHIPUAI_API_KEY="your-zhipuai-api-key"如果需要使用阿里云OSS文件上传功能,请配置OSS环境变量:
cp .env.oss.example .env.oss编辑 .env.oss 文件,填入真实的OSS配置:
# OSS区域
OSS_REGION="oss-cn-hangzhou"
# OSS访问密钥
OSS_ACCESS_KEY_ID="your-access-key-id"
OSS_ACCESS_KEY_SECRET="your-access-key-secret"
# OSS存储桶名称
OSS_BUCKET_NAME="your-bucket-name".env.oss文件包含敏感信息,已添加到.gitignore- 请勿将真实的AccessKey提交到代码仓库
- 建议定期轮换AccessKey
# 生成Prisma客户端
pnpm prisma generate
# 运行数据库迁移
pnpm prisma migrate dev
# 初始化数据
pnpm prisma db seed# 开发模式
pnpm dev
# 生产模式
pnpm build
pnpm start- 本地上传:支持文件上传到本地服务器
- OSS上传:支持文件上传到阿里云OSS(需配置)
- 头像上传:专门的头像上传接口
- 自动清理:OSS上传成功后自动删除本地临时文件
详细使用说明请参考:OSS上传功能指南
- 用户注册/登录
- JWT身份验证
- 用户信息管理
- 头像上传
- 支持多种AI模型
- 聊天记录管理
- 流式响应
- 系统配置管理
- 通知管理
- 日志记录
项目启动后,可以通过以下方式查看API文档:
- 查看
request.http文件中的示例请求 - 使用Postman等工具导入API集合
jdm-server/
├── src/
│ ├── modules/ # 功能模块
│ │ ├── upload/ # 文件上传模块
│ │ ├── user/ # 用户管理模块
│ │ ├── aiChat/ # AI聊天模块
│ │ ├── sys/ # 系统管理模块
│ │ └── notice/ # 通知模块
│ ├── utils/ # 工具函数
│ ├── middleware/ # 中间件
│ ├── db/ # 数据库配置
│ └── jwt/ # JWT配置
├── prisma/ # 数据库相关
│ ├── schema.prisma # 数据库模式
│ ├── migrations/ # 数据库迁移
│ └── initData/ # 初始化数据
├── config/ # 配置文件
├── uploads/ # 本地上传文件目录
├── .env # 主环境变量
├── .env.oss # OSS配置(不提交到Git)
└── .env.oss.example # OSS配置模板
- 在
src/modules/下创建新的模块目录 - 创建
controller.ts、services.ts等文件 - 在
config/container.ts中注册依赖 - 在
main.ts中注册路由
# 创建新的迁移
pnpm prisma migrate dev --name migration_name
# 重置数据库
pnpm prisma migrate reset
# 查看数据库
pnpm prisma studio- 使用TypeScript进行类型检查
- 遵循ESLint规则
- 使用Prettier格式化代码
- 编写单元测试
# 构建镜像
docker build -t jdm-server .
# 运行容器
docker run -p 3000:3000 jdm-server# 构建项目
pnpm build
# 使用PM2管理进程
pm2 start dist/main.js --name jdm-server-
数据库连接失败
- 检查
DATABASE_URL配置 - 确认数据库服务是否启动
- 验证用户名密码是否正确
- 检查
-
OSS上传失败
- 检查
.env.oss文件是否存在 - 验证AccessKey是否有效
- 确认Bucket权限配置
- 检查
-
端口占用
- 修改
BASE_URL中的端口号 - 或者停止占用端口的进程
- 修改
# 查看应用日志
tail -f logs/app.log
# 查看错误日志
tail -f logs/error.log- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请通过以下方式联系:
- 创建 Issue
- 发送邮件到:your-email@example.com
注意: 在生产环境中使用前,请确保:
- 更改默认密码
- 配置HTTPS
- 设置防火墙规则
- 定期备份数据库
- 监控系统性能