Skip to content

Commit 4a58fbc

Browse files
authored
fix(48081): omit error on importing variables defined with require() (microsoft#48115)
1 parent ca65a1a commit 4a58fbc

File tree

4 files changed

+54
-1
lines changed

4 files changed

+54
-1
lines changed

src/compiler/binder.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3288,7 +3288,7 @@ namespace ts {
32883288
}
32893289

32903290
if (!isBindingPattern(node.name)) {
3291-
if (isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node) && !getJSDocTypeTag(node)) {
3291+
if (isInJSFile(node) && isVariableDeclarationInitializedToBareOrAccessedRequire(node) && !getJSDocTypeTag(node) && !(getCombinedModifierFlags(node) & ModifierFlags.Export)) {
32923292
declareSymbolAndAddToSymbolTable(node as Declaration, SymbolFlags.Alias, SymbolFlags.AliasExcludes);
32933293
}
32943294
else if (isBlockOrCatchScoped(node)) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
=== /node_modules/foo/src/index.js ===
2+
module.exports = 1;
3+
>module.exports : Symbol(module.exports, Decl(index.js, 0, 0))
4+
>module : Symbol(export=, Decl(index.js, 0, 0))
5+
>exports : Symbol(export=, Decl(index.js, 0, 0))
6+
7+
=== /a.js ===
8+
export const A = require("foo");
9+
>A : Symbol(A, Decl(a.js, 0, 12))
10+
>require : Symbol(require)
11+
>"foo" : Symbol("/node_modules/foo/src/index", Decl(index.js, 0, 0))
12+
13+
=== /b.ts ===
14+
import { A } from "./a";
15+
>A : Symbol(A, Decl(b.ts, 0, 8))
16+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
=== /node_modules/foo/src/index.js ===
2+
module.exports = 1;
3+
>module.exports = 1 : number
4+
>module.exports : number
5+
>module : { exports: number; }
6+
>exports : number
7+
>1 : 1
8+
9+
=== /a.js ===
10+
export const A = require("foo");
11+
>A : number
12+
>require("foo") : number
13+
>require : any
14+
>"foo" : "foo"
15+
16+
=== /b.ts ===
17+
import { A } from "./a";
18+
>A : number
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// @esModuleInterop: true
2+
// @moduleResolution: node
3+
// @module: es2015
4+
// @checkJs: true
5+
// @allowJs: true
6+
// @noEmit: true
7+
8+
// @Filename: /node_modules/foo/package.json
9+
{ "name": "foo", "version": "1.2.3", "main": "src/index.js" }
10+
11+
// @Filename: /node_modules/foo/src/index.js
12+
module.exports = 1;
13+
14+
// @filename: /a.js
15+
export const A = require("foo");
16+
17+
// @filename: /b.ts
18+
import { A } from "./a";

0 commit comments

Comments
 (0)