Mac下执行drizzle-kit generate报JSON语法错误求助
Drizzle-Kit生成迁移时JSON解析错误排查
问题场景
使用Drizzle ORM管理数据库迁移,修改Schema.ts后执行迁移生成命令:
yarn db:generate Test
(对应原始命令:drizzle-kit generate --config=drizzle.config.ts --name Test)
出现以下错误:
john@Johns-MacBook-Pro repo % yarn db:generate Test yarn run v1.22.22 $ drizzle-kit generate --config=drizzle.config.ts --name Test Reading config file '/Users/john/Documents/code/repo/drizzle.config.ts' SyntaxError: Unexpected token in JSON at position 0 at JSON.parse (<anonymous>) at snapshots.reduce.malformed (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:6955:29) at Array.reduce (<anonymous>) at validateWithReport (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:6953:32) at prepareMigrationFolder (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:6995:22) at prepareAndMigratePg (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:33066:40) at Object.handler (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:88522:13) at async run (/Users/john/Documents/code/repo/node_modules/drizzle-kit/bin.cjs:87056:7) ✨ Done in 0.61s.
使用的drizzle.config.ts配置文件:
import { defineConfig } from 'drizzle-kit'; export default defineConfig({ out: './src/database/migrations', schema: './src/database/Schema.ts', dialect: 'postgresql', dbCredentials: { url: process.env.DB_URL ?? '' }, });
已确认process.env.DB_URL配置正确,求错误原因及解决方法。
错误原因及解决方法
这个错误是迁移目录下的快照文件损坏导致的。Drizzle-Kit会读取配置中out指定目录(即./src/database/migrations)内的.snapshot.json快照文件,若这些文件内容为空、格式错误或存在乱码,就会触发JSON解析失败。
解决步骤:
- 定位到
./src/database/migrations目录 - 删除目录下所有
.snapshot.json格式的文件 - 重新执行迁移生成命令
注:删除快照文件后,Drizzle-Kit会重新生成新的快照,不会影响已有的迁移文件,仅会重新对比当前Schema与数据库状态生成新迁移。
内容的提问来源于stack exchange,提问作者NULL pointer
相关产品推荐
相关产品推荐

