我正在测试这个框架并遇到了这些问题,我不知道它们为什么会发生,并且在 Node.js 文档和全局搜索中都找不到答案。
初始化js
const { f1, v1, v2, f2 } = require('./1.js')
f2()
1.js
module.exports = {
f1: function (v1) { f1(v1) },
v1: 1,
v2: this.v1 + 1,
f2: function () { f1(this.v2) },
// * error: outputs NaN .
// f2: function () { this.f1(this.v2) },
// * error: when called from importing script, crashes with `TypeError: this.f1 is not a function` .
//
// This function works if `<<name for Object>> = require('<<path>>')` syntax is used .
}
function f1 (v1) {
console.log(v1)
}
具体问题是:
如何在其他暴露函数中使用暴露函数和变量?
是否可以通过
module.exports = {
语法来实现?
如果您想保留定义对象内部所有内容的语法,您可以通过或 through
module.exports
在其他函数体内引用它:this
module.exports
您不能通过
module.exports
变量(非函数属性)引用对象。这是因为在计算属性值时,该属性值module.exports
还不存在。您也不能通过 引用它
this
,主要出于相同的原因:this
引用不同的事物,而不是对象。如果您将事物与导出分开定义,那么所有这些麻烦都可以轻松避免(还有额外的好处,例如使值只读、更细粒度的可见性控制等):