Eu estava testando esse framework e tive esses problemas, não sei por que eles acontecem e não consegui encontrar a resposta nem nos documentos do Node.js nem na pesquisa global.
init.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)
}
Perguntas específicas são:
Como usar funções e variáveis expostas em outras funções expostas?
É possível conseguir com
module.exports = {
sintaxe?
Se você deseja preservar a sintaxe de definição de tudo dentro do
module.exports
objeto, você pode referenciá-lo nos corpos de outras funções atravésthis
ou através demodule.exports
:Você não pode se referir ao objeto por
module.exports
variáveis (propriedades não funcionais). Isso porque enquanto o valor do imóvel está sendo calculado,module.exports
ainda não existe.Você também não pode se referir a ele por
this
, principalmente pelos mesmos motivos:this
refere-se a uma coisa diferente, não ao objeto.Todos esses problemas podem ser facilmente evitados (com benefícios adicionais, como tornar o valor somente leitura, controle de visibilidade mais refinado – e muito mais) se você definir as coisas separadamente da exportação: