microsoft / microsoft/TypeScript
The module namespace object returned by __importStar is not the same when import the same module multiple times
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
🔎 Search Terms
__importStarmodule objectnamespace 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
💻 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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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