diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts
index 5ce9ca431b15f..3fa7da5d5c960 100644
--- a/src/compiler/moduleNameResolver.ts
+++ b/src/compiler/moduleNameResolver.ts
@@ -3118,7 +3118,7 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
                 packageInfo,
             );
         if (
-            !pathAndExtension && packageInfo
+            !pathAndExtension && !rest && packageInfo
             // eslint-disable-next-line no-restricted-syntax
             && (packageInfo.contents.packageJsonContent.exports === undefined || packageInfo.contents.packageJsonContent.exports === null)
             && state.features & NodeResolutionFeatures.EsmMode
diff --git a/tests/baselines/reference/nodeModulesNoDirectoryModule.errors.txt b/tests/baselines/reference/nodeModulesNoDirectoryModule.errors.txt
new file mode 100644
index 0000000000000..b6f165f8b9014
--- /dev/null
+++ b/tests/baselines/reference/nodeModulesNoDirectoryModule.errors.txt
@@ -0,0 +1,26 @@
+/index.ts(2,8): error TS2307: Cannot find module 'i-have-a-dir-and-main/dist/dir' or its corresponding type declarations.
+
+
+==== /node_modules/i-have-a-dir-and-main/package.json (0 errors) ====
+    {
+      "name": "i-have-a-dir-and-main",
+      "version": "1.0.0",
+      "type": "module",
+      "main": "dist/index.js"
+    }
+    
+==== /node_modules/i-have-a-dir-and-main/dist/index.d.ts (0 errors) ====
+    export declare const a = 1;
+    
+==== /node_modules/i-have-a-dir-and-main/dist/dir/index.d.ts (0 errors) ====
+    export declare const b = 2;
+    
+==== /package.json (0 errors) ====
+    { "type": "module" }
+    
+==== /index.ts (1 errors) ====
+    import 'i-have-a-dir-and-main' // ok
+    import 'i-have-a-dir-and-main/dist/dir' // error
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2307: Cannot find module 'i-have-a-dir-and-main/dist/dir' or its corresponding type declarations.
+    
\ No newline at end of file
diff --git a/tests/cases/conformance/node/nodeModulesNoDirectoryModule.ts b/tests/cases/conformance/node/nodeModulesNoDirectoryModule.ts
new file mode 100644
index 0000000000000..5b5d38a99466c
--- /dev/null
+++ b/tests/cases/conformance/node/nodeModulesNoDirectoryModule.ts
@@ -0,0 +1,26 @@
+// @noUncheckedSideEffectImports: true
+// @strict: true
+// @module: node16
+// @noEmit: true
+// @noTypesAndSymbols: true
+
+// @Filename: /node_modules/i-have-a-dir-and-main/package.json
+{
+  "name": "i-have-a-dir-and-main",
+  "version": "1.0.0",
+  "type": "module",
+  "main": "dist/index.js"
+}
+
+// @Filename: /node_modules/i-have-a-dir-and-main/dist/index.d.ts
+export declare const a = 1;
+
+// @Filename: /node_modules/i-have-a-dir-and-main/dist/dir/index.d.ts
+export declare const b = 2;
+
+// @Filename: /package.json
+{ "type": "module" }
+
+// @Filename: /index.ts
+import 'i-have-a-dir-and-main' // ok
+import 'i-have-a-dir-and-main/dist/dir' // error