microsoft / microsoft/TypeScript

The module namespace object returned by __importStar is not the same when import the same module multiple times

Abierto
#63,391 2 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: JS Emit
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

🔎 Search Terms
  • __importStar
  • module object
  • namespace object
🕗 Version & Regression Information
  • Version: 6.0.2
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about "namespace import". I did not found any information related to this.
⏯ Playground Link

https://www.typescriptlang.org/play/?target=99&jsx=0&module=1&ts=6.0.2#code/DYUwLgBADgjBC8ECWBbKB7ATmAFAIgDMBnPASgG4BYAKFEigCYFk0tdCSKaaAFTdFEiIgAdAENgwHAG1YAGmgMAuqRFgAFiAB2OGcRgLiy0ggB8EAN40INiAGN0WoulAjg6AOY59CeIiMUEAD0QRBgmACuIDQAvlzUQA

💻 Code
let p1 = import("fs");
let p2 = import("fs");

Promise.all([p1, p2]).then(([fs1, fs2]) => {
    console.log(fs1 === fs2); // expected true
});
🙁 Actual behavior

When the compiled code with node is run, false is printed. This means that the two imported module namespace object is different. each __importStar call create a new module namespace object.

🙂 Expected behavior

true should be printed. The module namespace objects of these two import("fs") should be the same object.
If we run this script directly by node without compiled, true will be printed.

Additional information about the issue

To reproduce this issue, "module" in "tsconfig.json" need to be set to "commonjs". This makes tsc use __importStar and require to import the module.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el helper __importStar y la ruta del módulo CommonJS descrita en el issue, usando el ejemplo vinculado de Playground y una ejecución de Node.js como reproducción. Compara los dos resultados de Promise y sigue cómo las llamadas repetidas a import("fs") crean objetos de espacio de nombres; se considera terminado cuando el caso CommonJS compilado coincide con el comportamiento directo de Node.js y devuelve el mismo objeto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
node.js, typescript
Área
build-system, compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
52/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.