起因
今日在服务器上部署新服务的时候出现了如下错误
bash
确认配置正确,开始部署?[y/N] y
[INFO] 安装依赖(保留 devDependencies:esbuild / prisma CLI 为构建期必需)...
Scope: all 6 workspace projects
Lockfile is up to date, resolution step is skipped
Already up to date
Done in 1.9s using pnpm v10.33.0
[INFO] 构建服务端(tsc --noEmit + esbuild 打包 → dist/main.js)...
> project@0.0.1 build:server /home/project/project
> pnpm --filter @project/server build
> @project/server@0.0.1 build /home/project/project/packages/server
> tsc --noEmit && node build.mjs
src/plugins/prisma.ts:4:10 - error TS2305: Module '"@prisma/client"' has no exported member 'PrismaClient'.
4 import { PrismaClient } from '@prisma/client'
~~~~~~~~~~~~
src/routes/orders.route.ts:23:52 - error TS7006: Parameter 'db' implicitly has an 'any' type.
23 const rows = await f.prisma.$transaction(async db => {
~~
src/routes/orders.route.ts:31:37 - error TS7006: Parameter 'item' implicitly has an 'any' type.
31 const row = existing.find(item => item.id === ids[index])
~~~~
src/routes/orders.route.ts:35:44 - error TS7006: Parameter 'row' implicitly has an 'any' type.
35 return ids.map(id => existing.find(row => row.id === id)!)
~~~
src/routes/orders.route.ts:53:51 - error TS7006: Parameter 'db' implicitly has an 'any' type.
53 const row = await f.prisma.$transaction(async db => {
~~
src/routes/orders.route.ts:70:39 - error TS7006: Parameter 'db' implicitly has an 'any' type.
70 await f.prisma.$transaction(async db => {
~~
src/routes/provider-events.route.ts:25:54 - error TS7006: Parameter 'db' implicitly has an 'any' type.
25 const result = await f.prisma.$transaction(async db => {
排查
这个时候我才想起来之前就碰到过,也花了时间确实解决了。
最大的问题是我忘记把过程记录下来了!!!
现在重新回想的话,首先我就是想到 TypeScript 版本和某个小版本的 Prisma 有问题。
从这方便着手,用当前包里 lock 的版本开新项目跑了一遍,发现 完全没问题
然后又想不会是和 node 某个小版本有关系吧?
再次跑了一次更换 node 版本 ,结果也是 完全没问题
这个时候同时也让 Ai 再次跑本地构建和检查,Ai 给出的结论也是本地构建和检查都通过了
然后就是再来思考是不是构建问题,直接开个空项目把构建流程搬过来
跑完就发现复现了,这时候让 Ai 开始介入,找到构建流程的差异
实际就是 Ai 之前帮我整理构建脚本优化的时候先构建服务,再初始化 Prisma
然后就触发了 TS2305 错误接着就连锁反应触发了 TS7006 的所有代码都类型错误的问题
原因
ok,那么这就清晰明了了,在构建流程顺序上重新调整 setup_database build_server 即可
rust
install_deps -> build_server -> setup_database
改为如下
rust
install_deps -> setup_database -> build_server
版权声明:
本文版权属于作者 林小帅,未经授权不得转载及二次修改。
转载或合作请在下方留言及联系方式。