是否可以将 module.exports 设置为 setter/getter javascript?

Is it possible to set module.exports as a setter/getter javascript?

在文件中 a.js

// a.js
let a = 1

Object.defineProperty(module, "exports", {
  get() {
    return a
  },
  set(v) {
    a += 1
  },
  enumerable: true,
  configurable: true,
})

在文件中 b.js

// b.js
const a = require("./a")
console.log(a) // 1
a = 2 // a should now be 3
// Throws "Uncaught TypeError: Assignment to constant variable."

有什么办法吗? (在我 require 的东西上使用 setter)

是的!而且,没有。

虽然这在技术上是可行的,但您随后 运行 遇到无法访问 setter 的问题,因为它会调用 Getter 和 return require() 时的值。因此 getter/setter 功能只能通过源文件访问,getter 提供对要求的响应。