drizzle-team / drizzle-team/drizzle-orm

CLI generate migrations fails with ts module resolution "nodenext"

Open
#3,348 10 comments 18 reactions 0 assignees View on GitHub
bug drizzle/kit priority
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

While running migrations in following setup "drizzle-kit": "^0.22.7" throws error with typescript and type:module setup
```
// tsconfig.json
"module": "nodenext",
"moduleResolution": "nodenext",

// src/auth/schema/auth.models.ts - drizzle schema files
import { users } from '../../core/schema/core.models.js'
```
```
// Error
Error: Cannot find module '../../core/schema/core.models.js'
Require stack:
- /Users/unknown/work/src/auth/schema/auth.models.ts
- /Users/unknown/work/node_modules/.pnpm/drizzle-kit@0.22.7/node_modules/drizzle-kit/bin.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1212:15)
at Module._resolveFilename (/Users/unknown/work/node_modules/.pnpm/drizzle-kit@0.22.7/node_modules/drizzle-kit/bin.cjs:19969:40)
at Module._load (node:internal/modules/cjs/loader:1038:27)
at wrapModuleLoad (node:internal/modules/cjs/loader:212:19)
at Module.require (node:internal/modules/cjs/loader:1297:12)
at require (node:internal/modules/helpers:123:16)
at Object. (/Users/unknown/work/src/auth/schema/auth.models.ts:2:23)
at Module._compile (node:internal/modules/cjs/loader:1460:14)
at Module._compile (/Users/unknown/work/node_modules/.pnpm/drizzle-kit@0.22.7/node_modules/drizzle-kit/bin.cjs:17466:30)
at Module._extensions..js (node:internal/modules/cjs/loader:1544:10) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/unknown/work/src/auth/schema/auth.models.ts',
'/Users/unknown/work/node_modules/.pnpm/drizzle-kit@0.22.7/node_modules/drizzle-kit/bin.cjs'
]
}
```

Currently this is fixed by modifying drizzle-kit/bin.cjs
```
Module._resolveFilename = function(request, _parent) {
const isCoreModule = _module2.builtinModules.includes(request);
if (!isCoreModule) {
const found = matchPath(request);
if (found) {
const modifiedArguments = [found, ...[].slice.call(arguments, 1)];
return originalResolveFilename.apply(this, modifiedArguments);
}
}
/***********************Temporary fix start***************************/

if (request.endsWith('.js')) {
const found = path.resolve(_parent.path, request.replace('.js', '.ts'))
if (fs.existsSync(found)) {
const modifiedArguments = [found, ...[].slice.call(arguments, 1)];
return originalResolveFilename.apply(this, modifiedArguments);
}
}
/***********************Temporary fix end***************************/
return originalResolveFilename.apply(this, arguments);
};
return () => {
Module._resolveFilename = originalResolveFilename;
};
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.