microsoft / microsoft/TypeScript

require() is generated in JS although there's no runtime code

Offen
#61,395 5 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@andrewbranch arbeitet bereits daran.

Seit 14.3.2025.

Needs Investigation
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

### 🔎 Search Terms

require generated const enum
namespace require generated
namespace require const enum
namespace require
"export import" require

### ⏯ Playground Link

Multiple files, so can't use playground

### 💻 Code

```ts
// file1.ts
export namespace MyOtherNamespace {
export const enum Yay {
OK,
KO
}
}
```
```ts
// file2.ts
import { MyOtherNamespace } from "./file1";
export namespace MyNamespace {
export import NS2 = MyOtherNamespace;
}
```
```ts
import { MyNamespace } from "./file2.ts";

const val = MyNamespace.NS2.Yay.KO
```
```js
// Compiled code
const file2_1 = require("./file2"); // notice the variable name which is just "filename_1", as it is not used anywhere
const val = 1;
```

### 🙁 Actual behavior

Compiling an unused `const file2_1 = require("./file2");` line

### 🙂 Expected behavior

Do not compile unused line.

### Additional information about the issue

The problem is that this file is a types file, so it is installed only in develpment environment (`npm install -D xxx`) so in runtime it is failing because it can't find the required module.

If I modify the `MyNamespace` namespace to directly export a namespace instead of doing an `export import` it works, but we have a lot of namespaces so we have them separated into files, and couldn't find another way to export an imported namespace inside another namespace.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.