diff --git a/src/test/extension/nodeConfigurationProvider.test.ts b/src/test/extension/nodeConfigurationProvider.test.ts index 32f708ae0..42e348ac7 100644 --- a/src/test/extension/nodeConfigurationProvider.test.ts +++ b/src/test/extension/nodeConfigurationProvider.test.ts @@ -361,6 +361,26 @@ describe('NodeDebugConfigurationProvider', () => { ]); }); + it('does not resolve in node_modules', async () => { + createFileTree(testFixturesDir, { + 'a/node_modules/c/hello.js': '', + 'a/node_modules/c/package.json': '{}', + 'a/package.json': '{}', + }); + + const result = await provider.resolveDebugConfiguration(folder, { + type: DebugType.Node, + name: '', + request: 'launch', + program: 'a/node_modules/c/hello.js', + }); + + expect(result?.outFiles).to.deep.equal([ + '${workspaceFolder}/a/**/*.js', + '!**/node_modules/**', + ]); + }); + it('does not resolve outside the workspace folder', async () => { createFileTree(testFixturesDir, { 'a/b/c/hello.js': '', diff --git a/src/ui/configuration/nodeDebugConfigurationResolver.ts b/src/ui/configuration/nodeDebugConfigurationResolver.ts index a82f28e7c..9f1cc9e55 100644 --- a/src/ui/configuration/nodeDebugConfigurationResolver.ts +++ b/src/ui/configuration/nodeDebugConfigurationResolver.ts @@ -14,7 +14,7 @@ import { EnvironmentVars } from '../../common/environmentVars'; import { findOpenPort } from '../../common/findOpenPort'; import { IFsUtils, LocalFsUtils } from '../../common/fsUtils'; import { forceForwardSlashes, isSubdirectoryOf } from '../../common/pathUtils'; -import { nearestDirectoryContaining } from '../../common/urlUtils'; +import { nearestDirectoryWhere } from '../../common/urlUtils'; import { AnyNodeConfiguration, applyNodeDefaults, @@ -219,11 +219,11 @@ async function guessOutFiles( return; } - const root = await nearestDirectoryContaining( - fsUtils, + const root = await nearestDirectoryWhere( path.dirname(programLocation), - 'package.json', + async p => !p.includes('node_modules') && (await fsUtils.exists(path.join(p, 'package.json'))), ); + if (root && isSubdirectoryOf(folder.uri.fsPath, root)) { const rel = forceForwardSlashes(path.relative(folder.uri.fsPath, root)); config.outFiles = resolveVariableInConfig(