Error splitting schema in multiple modules
I was breaking down my old
schema.ts
module into multipe modules under a schema
dir.
I updated the config:
import 'dotenv/config';
import type { Config } from 'drizzle-kit';
export default {
schema: './src/schema',
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!
}
} satisfies Config;
import 'dotenv/config';
import type { Config } from 'drizzle-kit';
export default {
schema: './src/schema',
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!
}
} satisfies Config;
3 Replies
but when running
gives this error in
and
i really can't understand why this is happening
update
upon changing the extension of the
generate
:
No config path provided, using default 'drizzle.config.ts'
Reading config file 'C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\drizzle.config.ts'
Error: Cannot find module './users.js'
Require stack:
- C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\src\schema\bans.ts
- C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15)
at Module._resolveFilename (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:16751:40)
at Module._load (node:internal/modules/cjs/loader:1051:27)
at Module.require (node:internal/modules/cjs/loader:1311:19)
at require (node:internal/modules/helpers:179:18)
at Object.<anonymous> (C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\src\schema\bans.ts:9:28)
at Module._compile (node:internal/modules/cjs/loader:1469:14)
at Module._compile (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:14260:30)
at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
at Object.newLoader [as .ts] (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:14264:13) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\tomas\\Coding\\Web\\quacker\\world\\src\\packages\\db\\src\\schema\\bans.ts',
'C:\\Users\\tomas\\Coding\\Web\\quacker\\world\\node_modules\\.pnpm\\[email protected]\\node_modules\\drizzle-kit\\bin.cjs'
]
}
No config path provided, using default 'drizzle.config.ts'
Reading config file 'C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\drizzle.config.ts'
Error: Cannot find module './users.js'
Require stack:
- C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\src\schema\bans.ts
- C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15)
at Module._resolveFilename (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:16751:40)
at Module._load (node:internal/modules/cjs/loader:1051:27)
at Module.require (node:internal/modules/cjs/loader:1311:19)
at require (node:internal/modules/helpers:179:18)
at Object.<anonymous> (C:\Users\tomas\Coding\Web\quacker\world\src\packages\db\src\schema\bans.ts:9:28)
at Module._compile (node:internal/modules/cjs/loader:1469:14)
at Module._compile (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:14260:30)
at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
at Object.newLoader [as .ts] (C:\Users\tomas\Coding\Web\quacker\world\node_modules\.pnpm\[email protected]\node_modules\drizzle-kit\bin.cjs:14264:13) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\tomas\\Coding\\Web\\quacker\\world\\src\\packages\\db\\src\\schema\\bans.ts',
'C:\\Users\\tomas\\Coding\\Web\\quacker\\world\\node_modules\\.pnpm\\[email protected]\\node_modules\\drizzle-kit\\bin.cjs'
]
}
bans.js
saying that the users.js
module cannot be found.
bans.ts
import {
integer,
pgTable,
serial,
timestamp,
varchar
} from 'drizzle-orm/pg-core';
import { usersTable } from './users.js';
/**
* User ban records.
*/
export const bansTable = pgTable('bans', {
id: serial('id').primaryKey(),
userId: integer('user_id')
.notNull()
.references(() => usersTable.id, {
onDelete: 'cascade',
onUpdate: 'cascade'
}),
issued: timestamp('issued', { mode: 'date' }).notNull().defaultNow(),
expires: timestamp('expires', { mode: 'date' }),
moderatorId: integer('moderator_id').references(() => usersTable.id, {
onDelete: 'set null',
onUpdate: 'set null'
}),
reason: varchar('reason').notNull()
});
import {
integer,
pgTable,
serial,
timestamp,
varchar
} from 'drizzle-orm/pg-core';
import { usersTable } from './users.js';
/**
* User ban records.
*/
export const bansTable = pgTable('bans', {
id: serial('id').primaryKey(),
userId: integer('user_id')
.notNull()
.references(() => usersTable.id, {
onDelete: 'cascade',
onUpdate: 'cascade'
}),
issued: timestamp('issued', { mode: 'date' }).notNull().defaultNow(),
expires: timestamp('expires', { mode: 'date' }),
moderatorId: integer('moderator_id').references(() => usersTable.id, {
onDelete: 'set null',
onUpdate: 'set null'
}),
reason: varchar('reason').notNull()
});
users.ts
import {
pgTable,
boolean,
integer,
smallint,
timestamp,
uniqueIndex,
serial,
varchar
} from 'drizzle-orm/pg-core';
import { UserRank } from '@quacker/consts';
import lower from '../utils/lower.js';
/**
* Users.
*/
export const usersTable = pgTable(
'users',
{
id: serial('id').primaryKey(),
name: varchar('name', { length: 12 }).notNull(),
email: varchar('email').notNull(),
password: varchar('password').notNull(),
verified: boolean('verified').notNull().default(false),
rank: smallint('rank').notNull().default(UserRank.USER),
createdAt: timestamp('created_at', { mode: 'date' })
.notNull()
.defaultNow(),
coins: integer('coins').notNull().default(500),
color: integer('color').notNull(),
head: integer('head'),
face: integer('face'),
neck: integer('neck'),
body: integer('body'),
hand: integer('hand'),
feet: integer('feet')
},
(table) => [
uniqueIndex('name_unique_index').on(lower(table.name)),
uniqueIndex('email_unique_index').on(lower(table.email))
]
);
import {
pgTable,
boolean,
integer,
smallint,
timestamp,
uniqueIndex,
serial,
varchar
} from 'drizzle-orm/pg-core';
import { UserRank } from '@quacker/consts';
import lower from '../utils/lower.js';
/**
* Users.
*/
export const usersTable = pgTable(
'users',
{
id: serial('id').primaryKey(),
name: varchar('name', { length: 12 }).notNull(),
email: varchar('email').notNull(),
password: varchar('password').notNull(),
verified: boolean('verified').notNull().default(false),
rank: smallint('rank').notNull().default(UserRank.USER),
createdAt: timestamp('created_at', { mode: 'date' })
.notNull()
.defaultNow(),
coins: integer('coins').notNull().default(500),
color: integer('color').notNull(),
head: integer('head'),
face: integer('face'),
neck: integer('neck'),
body: integer('body'),
hand: integer('hand'),
feet: integer('feet')
},
(table) => [
uniqueIndex('name_unique_index').on(lower(table.name)),
uniqueIndex('email_unique_index').on(lower(table.email))
]
);
users.ts
module to .js
, the error now mentions a different .ts
file.
this is confirmed to be something with Drizzle for some reason strictly expecting.js
files...
still don't understand why this is happening. my schema.ts
has always been in TypeScript and it worked fineGitHub
[BUG]: Cannot find module error when import includes '.js' file ext...
What version of drizzle-orm are you using? 0.32.1 What version of drizzle-kit are you using? 0.23.0 Describe the Bug Attempting to generate a migration script fails with 'cannot find module'...
it's an open issue, almost one year old... how hasn't this been fixed yet?