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!