为 module.exports 赋值

Assigning value to module.exports

我正在阅读 Node.js Design Patterns 中的 module.exports。在本书中,提到:

Reassigning the exports variable doesn't have any effect, because it doesn't change the contents of module.exports, it will only reassign the variable itself.

因此以下代码是错误的:

 exports = function() {
   console.log('Hello');
 };

我无法理解为什么上面的赋值是错误的?

您这样做会覆盖本地 exports 变量。每个 Node.js 文件周围的 wrapper function 是本地的。当您使用新对象时,V8 无法知道您对原始 exports 对象做了什么修改。

您要做的是覆盖 module 对象中的 exports 键。

module.exports = function() {
  console.log('Hello');
};

为了更方便,您还可以分配给 exports 变量,以便您可以在本地利用它:module.exports = exports = ...。这就是 exports 的真正含义,一种访问 module.exports.

的更快方法