Durante la optimización del código de mi proyecto, estaba reemplazando todas las instancias de la palabra clave var con let porque creo que no queda ningún uso particular para var . Hice un 'Buscar y reemplazar' en todos los archivos para hacer esto.
En algunos módulos personalizados había usado declaraciones como:
var exports = module.exports = {};que funcionó bien.
Ahora, después de reemplazarlo con let , se convirtió en:
let exports = module.exports = {};Ahora no funciona y da error
SyntaxError: el identificador 'exportaciones' ya se ha declarado
Aunque puedo usar var y evitar este problema, todavía quiero saber cuál es la razón detrás de esto.
EDITAR: No he usado let exports = <something>; en cualquier lugar del mismo archivo de módulo. Así que esta es la única declaración en la que he declarado la variable exports .
El motivo es que las exports ya están inicializadas en el sistema de módulos de Nodejs.
https://nodejs.org/api/modules.html#modules_module_exports
El objeto existe, module.exports cuando se carga el módulo. Dado let es específico del alcance, le impide limitar el alcance. const también fallaría.