During code optimisation of my project, I was replacing all instances of var keyword with let because I think there is no particular use left for var. I did a 'Find & Replace' in all files to do this.
In some custom modules I had used statements like:
var exports = module.exports = {};
which worked fine.
Now, after replacing it with let, it became:
let exports = module.exports = {};
It does not work now and gives an error
SyntaxError: Identifier 'exports' has already been declared
Though I can use var and avoid this problem, I still want to know what is the reason behind this.
EDIT: I have not used let exports = <something>; anywhere in same module file. So this is the only statement where I have declared exports variable.
The reason is because exports is already initialized in Nodejs module system.
https://nodejs.org/api/modules.html#modules_module_exports
The object exists, module.exports when the module loads. Since let is scope specific it is preventing you from limiting the scope. const would also fail.