type
status
date
slug
summary
tags
category
icon
password
🎯 为什么本地没问题,部署就出错?
1. TypeScript 严格模式或构建检查差异
- 本地你可能跑的是
next dev,它默认 容忍一些类型错误、隐式 any、ES 兼容问题。
- 部署使用的是
next build,它会严格执行: tsconfig.json的设置(比如noImplicitAny,strictNullChecks)- 类型推断错误
- 构建失败时直接阻止上线
✅ 解决方法:
- 在本地执行一次
npm run build,提前发现问题。
- 确保
tsconfig.json设置一致,不要本地关掉strict却部署打开。
2. Prisma schema / 数据库同步问题
- 你本地的 Prisma schema 可能和数据库是同步的。
- 部署环境:
- 没有正确执行
npx prisma generate - 没有跑
npx prisma migrate deploy - 缺少唯一索引导致
skipDuplicates报错
✅ 解决方法:
- 确保你在部署前执行:
- 检查
prisma/schema.prisma是否被正确提交和部署。
3. 环境变量不同
- 本地
.env文件存在,部署环境没有设置JWT_SECRET、DATABASE_URL等,导致运行失败。
- Vercel、Render、Railway 等平台默认不会读取
.env,你需要手动配置环境变量。
✅ 解决方法:
- 检查部署平台的环境变量设置,确认所有
.env中的变量都已设置。
4. 文件路径大小写错误(Linux 与 macOS/Windows 差异)
- 本地文件系统大小写不敏感(如 macOS/Windows),部署(如 Linux)大小写敏感。
- 比如你写了
import { prisma } from '@/Lib/prisma',本地没事,部署就 404。
✅ 解决方法:
- 文件路径大小写严格统一。
- 使用 ESLint + import 校验插件检查路径大小写。
5. 某些依赖/模块未安装或版本不兼容
- 本地用
npm,部署用yarn,或 lock 文件不一致。
- 某些依赖是本地安装但没有写入
package.json。
✅ 解决方法:
- 使用固定版本依赖,提交
package-lock.json或yarn.lock
- 在部署前执行
npm ci而非npm install,避免差异
✅ 建议你这样做:
- 在本地运行:
不要只用
npm run dev,因为它不会报类型错误!- 检查
tsconfig.json:
- 检查你部署平台的:
- 环境变量
- 文件系统是否大小写敏感
- 是否执行了
prisma generate和prisma migrate
- Author:xiyshi
- URL:http://preview.tangly1024.com/article/example-5
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
