diff --git a/src/compiler/moduleNameResolver.ts b/src/compiler/moduleNameResolver.ts
index fbd4f57a4a0fb..0ddbe301de2d9 100644
--- a/src/compiler/moduleNameResolver.ts
+++ b/src/compiler/moduleNameResolver.ts
@@ -1422,7 +1422,8 @@ namespace ts {
export function getPackageNameFromTypesPackageName(mangledName: string): string {
const withoutAtTypePrefix = removePrefix(mangledName, "@types/");
if (withoutAtTypePrefix !== mangledName) {
- return unmangleScopedPackageName(withoutAtTypePrefix);
+ const withoutAtTypeNodePrefix = removePrefix(withoutAtTypePrefix, "node/");
+ return unmangleScopedPackageName(withoutAtTypeNodePrefix);
}
return mangledName;
}
diff --git a/tests/baselines/reference/importDeclFromTypeNodeInJsSource.js b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.js
new file mode 100644
index 0000000000000..7abc439c941d6
--- /dev/null
+++ b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.js
@@ -0,0 +1,40 @@
+//// [tests/cases/compiler/importDeclFromTypeNodeInJsSource.ts] ////
+
+//// [index.d.ts]
+///
+//// [events.d.ts]
+declare module "events" {
+ namespace EventEmitter {
+ class EventEmitter {
+ constructor();
+ }
+ }
+ export = EventEmitter;
+}
+
+//// [b.js]
+import { EventEmitter } from 'events';
+class Foo extends EventEmitter {
+ constructor() {
+ super();
+ }
+}
+export default Foo;
+
+//// [b.js]
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const events_1 = require("events");
+class Foo extends events_1.EventEmitter {
+ constructor() {
+ super();
+ }
+}
+exports.default = Foo;
+
+
+//// [b.d.ts]
+export default Foo;
+declare class Foo extends EventEmitter {
+}
+import { EventEmitter } from "events";
diff --git a/tests/baselines/reference/importDeclFromTypeNodeInJsSource.symbols b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.symbols
new file mode 100644
index 0000000000000..107341d01ecff
--- /dev/null
+++ b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.symbols
@@ -0,0 +1,35 @@
+=== /src/node_modules/@types/node/index.d.ts ===
+///
+No type information for this code.=== /src/node_modules/@types/node/events.d.ts ===
+declare module "events" {
+>"events" : Symbol("events", Decl(events.d.ts, 0, 0))
+
+ namespace EventEmitter {
+>EventEmitter : Symbol(EventEmitter, Decl(events.d.ts, 0, 25))
+
+ class EventEmitter {
+>EventEmitter : Symbol(EventEmitter, Decl(events.d.ts, 1, 28))
+
+ constructor();
+ }
+ }
+ export = EventEmitter;
+>EventEmitter : Symbol(EventEmitter, Decl(events.d.ts, 0, 25))
+}
+
+=== /src/b.js ===
+import { EventEmitter } from 'events';
+>EventEmitter : Symbol(EventEmitter, Decl(b.js, 0, 8))
+
+class Foo extends EventEmitter {
+>Foo : Symbol(Foo, Decl(b.js, 0, 38))
+>EventEmitter : Symbol(EventEmitter, Decl(b.js, 0, 8))
+
+ constructor() {
+ super();
+>super : Symbol(EventEmitter, Decl(events.d.ts, 1, 28))
+ }
+}
+export default Foo;
+>Foo : Symbol(Foo, Decl(b.js, 0, 38))
+
diff --git a/tests/baselines/reference/importDeclFromTypeNodeInJsSource.types b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.types
new file mode 100644
index 0000000000000..4cdf90bb4e717
--- /dev/null
+++ b/tests/baselines/reference/importDeclFromTypeNodeInJsSource.types
@@ -0,0 +1,36 @@
+=== /src/node_modules/@types/node/index.d.ts ===
+///
+No type information for this code.=== /src/node_modules/@types/node/events.d.ts ===
+declare module "events" {
+>"events" : typeof import("events")
+
+ namespace EventEmitter {
+>EventEmitter : typeof EventEmitter
+
+ class EventEmitter {
+>EventEmitter : EventEmitter
+
+ constructor();
+ }
+ }
+ export = EventEmitter;
+>EventEmitter : typeof EventEmitter
+}
+
+=== /src/b.js ===
+import { EventEmitter } from 'events';
+>EventEmitter : typeof EventEmitter
+
+class Foo extends EventEmitter {
+>Foo : Foo
+>EventEmitter : EventEmitter
+
+ constructor() {
+ super();
+>super() : void
+>super : typeof EventEmitter
+ }
+}
+export default Foo;
+>Foo : Foo
+
diff --git a/tests/cases/compiler/importDeclFromTypeNodeInJsSource.ts b/tests/cases/compiler/importDeclFromTypeNodeInJsSource.ts
new file mode 100644
index 0000000000000..040994a61d77a
--- /dev/null
+++ b/tests/cases/compiler/importDeclFromTypeNodeInJsSource.ts
@@ -0,0 +1,26 @@
+// @target: esnext
+// @module: commonjs
+// @allowJs: true
+// @checkJs: true
+// @declaration: true
+// @outDir: ./dist
+// @filename: /src/node_modules/@types/node/index.d.ts
+///
+// @filename: /src/node_modules/@types/node/events.d.ts
+declare module "events" {
+ namespace EventEmitter {
+ class EventEmitter {
+ constructor();
+ }
+ }
+ export = EventEmitter;
+}
+
+// @filename: /src/b.js
+import { EventEmitter } from 'events';
+class Foo extends EventEmitter {
+ constructor() {
+ super();
+ }
+}
+export default Foo;
\ No newline at end of file