Resolving tsconfig paths breaks inside node_modules
Author: IlyaSemenovCreated Dec 5, 2022Updated Jun 1, 2026
Labelsbugpending triagetsconfig
Bug description
I put my project inside node_modules directory (not even real node_modules alongside some package.json, just a new directory named that).
After doing so, resolving tsconfig paths stopped working.
I expect tsx to be agnostic to where the project is located (as long as it has its own package.json and tsconfig.json), same as esbuild is.
Reproduction
I repeated this on Stackblitz: https://stackblitz.com/edit/node-qjlxvn
This does not completely resemble the description above (it uses a 'real' node_modules directory) but the very same code can be used to repeat the problem on a completely empty node_modules.
Run:
~/projects/node-qjlxvn
❯ cd test
~/projects/node-qjlxvn/test
❯ tsx index.ts
value
~/projects/node-qjlxvn/test
❯ cd ..
~/projects/node-qjlxvn
❯ mv test node_modules/
~/projects/node-qjlxvn
❯ cd node_modules/test
~/projects/node-qjlxvn/node_modules/test
❯ tsx index.ts
Error: Cannot find module '@/value'
Require stack:
- /home/projects/node-qjlxvn/node_modules/test/index.ts
at Module._resolveFilename (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:6:217308)
at d.default._resolveFilename (file:///home/projects/node-qjlxvn/node_modules/.pnpm/@[email protected]/node_modules/@esbuild-kit/cjs-loader/dist/index.js:1:1554)
at Module._load (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:6:214847)
at Module.require (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:6:218087)
at i (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:6:415284)
at _0xc8b09a (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:15:142803)
at eval (file:///home/projects/node-qjlxvn/node_modules/test/index.ts:2:774)
at Object.eval (file:///home/projects/node-qjlxvn/node_modules/test/index.ts:3:3)
at Object.function (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:15:143540)
at Module._compile (https://nodeqjlxvn-s25i.w-credentialless.staticblitz.com/blitz.b6c96f782a49b3e017dca41830943768f8acbe40.js:6:219079) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/home/projects/node-qjlxvn/node_modules/test/index.ts' ]
}
~/projects/node-qjlxvn/node_modules/test
❯ esbuild --bundle index.ts
(() => {
// src/value.ts
var value_default = "value";
// index.ts
console.log(value_default);
})();Environment
System:
OS: Linux 5.0 undefined
CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Memory: 0 Bytes / 0 Bytes
Shell: 1.0 - /bin/jsh
Binaries:
Node: 16.14.2 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 7.17.0 - /usr/local/bin/npm
npmPackages:
tsx: ^3.12.1 => 3.12.1Can you contribute a fix?
- I’m interested in opening a pull request for this issue.
Source: privatenumber/tsx