prisma migrate dev在vscode终端报“command not found”主因是prisma cli未进入shell path或未安装到当前node环境,需先验证which prisma、确保npm install -g prisma或使用npx prisma migrate dev,并注意nvm切换后需从命令行启动code .及powershell执行策略限制。

Prisma migrate dev 为什么在 VSCode 终端里报 command not found
不是插件问题,是 prisma CLI 没进 shell PATH 或没装到当前 Node 环境里。VSCode 集成终端可能用的是 zsh/bash 不同配置,或 nvm/fnm 切换的版本没生效。
- 先在系统终端(非 VSCode)运行
which prisma,确认有输出;没有就执行npm install -g prisma - 如果用了 nvm,确保 VSCode 是从命令行启动:
code .,否则它可能读不到 nvm 的node和全局 bin - 项目本地装了
prisma(devDependencies),但没加npx:必须写成npx prisma migrate dev,不能直接敲prisma migrate dev - Windows 用户注意:PowerShell 默认禁用脚本,
npx可能被拦截,改用 Git Bash 或在 PowerShell 执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Knex CLI 在 launch.json 里跑不起来调试
Knex 本身不是可直接 node 启动的 JS 文件,它的 CLI 入口是 knex 命令,而 VSCode 调试器只认 .js 入口。硬塞 "program": "node_modules/.bin/knex" 会失败——那是 shell 脚本,不是 JS。
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
- 正确做法:用
runtimeExecutable指向npx,再把knex当参数传:"runtimeExecutable": "npx","runtimeArgs": ["knex", "migrate:latest"] - 如果迁移脚本依赖环境变量(如
KNEX_ENV=development),别写在env字段里——Knex CLI 不读这个;改用"env": {"KNEX_ENV": "development"},且确保runtimeExecutable是npx而非node - Knexfile.js 里用了 ES Module 语法(
export default)?那得配--loader ts-node/esm或确保type: "module"在 package.json 里,否则npx knex直接报错
Prisma Studio 打不开或连不上本地数据库
Prisma Studio 是个本地 HTTP 服务,但它依赖 prisma generate 后生成的 client 类型定义,也依赖 datasource 配置里的连接串是否真实可达。VSCode 插件点 “Prisma: Launch Studio” 按钮后白屏或报错,大概率卡在这两环。
- 先验证
schema.prisma里url字段是不是用了环境变量:比如env("DATABASE_URL")—— 那你得确保.env文件在项目根目录,且 VSCode 终端已加载它(dotenv不自动生效于 Studio 进程) - Studio 启动时会尝试连接数据库校验;如果 PostgreSQL/MySQL 服务没开、端口被占、或密码错,它不会报具体错误,只显示 “Failed to load schema”,此时看 VSCode 输出面板 → “Prisma Language Server” 标签,找红色日志
- Mac M 系列用户常见坑:PostgreSQL 安装后默认监听
localhost,但 Prismaurl写了127.0.0.1,IPv6/IPv4 解析不一致导致连接超时;统一改成localhost或检查pg_hba.conf
调试迁移脚本时断点失效(尤其 Knex 的 migrations/*.ts)
不是代码问题,是调试器根本没加载你的迁移文件。Knex 运行迁移时,实际执行的是编译后的 .js,而你断点打在 .ts 上,source map 没对上,或者 TS 编译输出路径和 Knex 查找路径不一致。
- 确保
tsconfig.json开了"sourceMap": true,且"outDir"和knexfile.js里migrationsDirectory指向同一级(比如都设为"dist/migrations") - launch.json 中
"program"别指向knexfile.js—— 它只是配置文件;要指向 Knex CLI 的 JS 入口:"program": "${workspaceFolder}/node_modules/knex/bin/cli.js",再通过args传命令 - 更稳的做法:不调试 CLI,而是把迁移逻辑抽成独立函数,在
index.ts里调用并 attach 调试,绕过 Knex 自己的 require 加载链
.env 全局生效,或 npx 总能找到本地包),都会让整个流程静默失败。










