NextJS14 和 Drizzle ORM 的新功能。 我已经阅读并观看了一些关于 drizzle orm 的教程,并且能够使用
drizzle-kit generate:pg
和 drizzle-kit push:pg
之类的东西来创建迁移文件,然后将其推送到数据库进行更改。
我仍然不确定这是否是更改数据库的最佳方法,并且还在调查是否存在我找不到的迁移历史记录,然后我看到实际上有一个用于 mysql 在此文档中运行的
migrate.ts
https://orm.drizzle.team/docs/migrations
。
所以我创建了类似的东西,看起来像这样
import postgres from 'postgres';
import { drizzle } from 'drizzle-orm/postgres-js';
import { migrate } from 'drizzle-orm/postgres-js/migrator';
const migrationsClient = postgres('postgresql://nextjs14:nextjs14@localhost:5432/nextjs14', {
max: 1,
});
const db = drizzle(migrationsClient);
await migrate(db, { migrationsFolder: './drizzle' });
await migrationsClient.end();
然后我尝试运行
npx tsx src/migrate.ts
这会给我一个错误,因为无法编译 ts 所以我必须更改 package.json
以包含 "type": "module"
然后迁移运行良好,但后来意识到当我尝试启动 NextJS 时,我会得到一个错误
ReferenceError: module is not defined in ES module scope
我确实尝试用谷歌搜索这个错误,但这些配置都不能让我顺利运行
migrate.ts
和yarn dev
。
想知道我是否遗漏了任何东西,或者
migrate.ts
甚至不应该像那样运行。
预先感谢您的任何建议或结果。
我也有同样的问题。尝试在 NextJS 项目中使用 Drizzle,但由于模块问题而无法执行建议的
migrate.ts
文件。