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
pato
patoOP4w ago
but when running 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'
]
}
gives this error in 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()
});
and 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))
]
);
i really can't understand why this is happening update upon changing the extension of the 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 fine
pato
patoOP4w ago
GitHub
[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 &#39;cannot find module&#39...
pato
patoOP4w ago
it's an open issue, almost one year old... how hasn't this been fixed yet?

Did you find this page helpful?