microsoft / microsoft/TypeScript

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

Open
#61,395 5 comments 0 reactions 1 assignee View on GitHub

@andrewbranch is already working on this.

Since Mar 14, 2025.

Needs Investigation
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
132

Description

### 🔎 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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.