diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index a40d66280ea..e80c7f2222c 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -3288,7 +3288,7 @@ namespace ts { } if (!isBindingPattern(node.name)) { - if (isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node) && !getJSDocTypeTag(node)) { + if (isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node) && !getJSDocTypeTag(node) && !(getCombinedModifierFlags(node) & ModifierFlags.Export)) { declareSymbolAndAddToSymbolTable(node as Declaration, SymbolFlags.Alias, SymbolFlags.AliasExcludes); } else if (isBlockOrCatchScoped(node)) { diff --git a/tests/baselines/reference/importNonExportedMember12.symbols b/tests/baselines/reference/importNonExportedMember12.symbols new file mode 100644 index 00000000000..47b0acd1e88 --- /dev/null +++ b/tests/baselines/reference/importNonExportedMember12.symbols @@ -0,0 +1,16 @@ +=== /node_modules/foo/src/index.js === +module.exports = 1; +>module.exports : Symbol(module.exports, Decl(index.js, 0, 0)) +>module : Symbol(export=, Decl(index.js, 0, 0)) +>exports : Symbol(export=, Decl(index.js, 0, 0)) + +=== /a.js === +export const A = require("foo"); +>A : Symbol(A, Decl(a.js, 0, 12)) +>require : Symbol(require) +>"foo" : Symbol("/node_modules/foo/src/index", Decl(index.js, 0, 0)) + +=== /b.ts === +import { A } from "./a"; +>A : Symbol(A, Decl(b.ts, 0, 8)) + diff --git a/tests/baselines/reference/importNonExportedMember12.types b/tests/baselines/reference/importNonExportedMember12.types new file mode 100644 index 00000000000..2c1e47552d8 --- /dev/null +++ b/tests/baselines/reference/importNonExportedMember12.types @@ -0,0 +1,19 @@ +=== /node_modules/foo/src/index.js === +module.exports = 1; +>module.exports = 1 : number +>module.exports : number +>module : { exports: number; } +>exports : number +>1 : 1 + +=== /a.js === +export const A = require("foo"); +>A : number +>require("foo") : number +>require : any +>"foo" : "foo" + +=== /b.ts === +import { A } from "./a"; +>A : number + diff --git a/tests/cases/compiler/importNonExportedMember12.ts b/tests/cases/compiler/importNonExportedMember12.ts new file mode 100644 index 00000000000..4c4b515fb45 --- /dev/null +++ b/tests/cases/compiler/importNonExportedMember12.ts @@ -0,0 +1,18 @@ +// @esModuleInterop: true +// @moduleResolution: node +// @module: es2015 +// @checkJs: true +// @allowJs: true +// @noEmit: true + +// @Filename: /node_modules/foo/package.json +{ "name": "foo", "version": "1.2.3", "main": "src/index.js" } + +// @Filename: /node_modules/foo/src/index.js +module.exports = 1; + +// @filename: /a.js +export const A = require("foo"); + +// @filename: /b.ts +import { A } from "./a";