Open
Description
Hi! I got a bug report in pgkit which uses pg/lib/type-overrides: mmkal/pgkit#443
It seems to be because of the new exports
definition on package.json
Here's an easy repro you can run in another project (empty directory after npm init -y
, say):
npm i pg@~8.14.0 && node -e "require('pg/lib/type-overrides')" # succeeds
npm i pg@~8.15.0 && node -e "require('pg/lib/type-overrides')" # fails
npm i pg@~8.16.0 && node -e "require('pg/lib/type-overrides')" # fails
Error for the latter two looks like:
Error: Cannot find module '/Users/mmkal/src/scratch/node_modules/pg/lib/type-overrides'
at createEsmNotFoundErr (node:internal/modules/cjs/loader:1441:15)
at finalizeEsmResolution (node:internal/modules/cjs/loader:1430:15)
at resolveExports (node:internal/modules/cjs/loader:661:14)
at Function._findPath (node:internal/modules/cjs/loader:753:31)
at Function._resolveFilename (node:internal/modules/cjs/loader:1391:27)
at defaultResolveImpl (node:internal/modules/cjs/loader:1061:19)
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1066:22)
at Function._load (node:internal/modules/cjs/loader:1215:37)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24) {
code: 'MODULE_NOT_FOUND',
path: '/Users/mmkal/src/scratch/node_modules/pg'
}
If you go into node_modules and delete the exports
prop on package.json, it works ok again.
It also works if you add ./lib/type-overrides
explicitly, so one option might be to explicitly write out every supported import like this:
"exports": {
".": {
"import": "./esm/index.mjs",
"require": "./lib/index.js",
"default": "./lib/index.js"
},
"./lib/type-overrides": {
"import": "./esm/type-overrides.mjs",
"require": "./lib/type-overrides.js",
"default": "./lib/type-overrides.js"
},
"./lib/*": {
"import": "./lib/*",
"require": "./lib/*",
"default": "./lib/*"
}
},
Possibly related to #3457 but arguably this is more serious since it affects runtime.