带有 postgresql 和 nextjs14 typescript 的毛毛雨 orm 迁移问题

问题描述 投票:0回答:1

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
甚至不应该像那样运行。

预先感谢您的任何建议或结果。

typescript postgresql next.js drizzle
1个回答
0
投票

我也有同样的问题。尝试在 NextJS 项目中使用 Drizzle,但由于模块问题而无法执行建议的

migrate.ts
文件。

© www.soinside.com 2019 - 2024. All rights reserved.