So exportieren Sie eine Variable, die sich in einer Klasse in Nodejs befindet
Dies ist meine Datei loginHandler.js
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Ich möchte auf die Variable merchantIdin einer anderen Datei zugreifen
const loginHandler = require('./loginHandler')
class ResponseHandler {
getResponseFromCOMM(options,token, res){
console.log(loginHandler.merchantId)
}
}
Aber MerchantId ist undefiniert. Können Sie mir bitte sagen, was ich falsch mache?
Hier sehen Sie den Code auf Glitch = https://glitch.com/edit/#!/turquoise-spiky-chrysanthemum
Antworten
Meine loginhanderler.js
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Meine index.js
let loginHandler = require('./loginhandler');
let req = {
params: {
merchantId: 'a test',
},
};
loginHandler.returnURLForIframe(req);
console.log(loginHandler.merchantId);
Ich habe es gelöst, indem ich es einer Umgebungsvariablen in loginHandler.js hinzugefügt habe
process.env.MERCHANT_ID = req.params.merchantId
und dann habe ich auf responseHandler.js auf diese Variable zugegriffen
merchantId : process.env.MERCHANT_ID
Sie können es als Objektschlüssel definieren
class LoginHandler {
constructor() {
this.merchantId = '';
}
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
neuer LoginHandler
class LoginHandler {
merchantId = "";
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
FÜR ZUKÜNFTIGE REFERENZEN (auch für mich selbst)
Es war verwirrend zu erkennen, was der Fehler war, daher war es für mich hilfreich, den Namen der Variablen zu ändern:
class LoginHandler {
other= "";
returnURLForIframe(req, res) {
other = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Dann sah ich, dass der Fehler war ReferenceError: other is not definedund ihn beheben konnte.
Neben der Protokollierung musste auch aufgerufen werden returnURLForIframe, um den Fehler anzuzeigen
const loginHandler = require("./loginHandler");
class ResponseHandler {
getResponseFromCOMM(options, token, res) {
loginHandler.returnURLForIframe({ params: { merchantId: "lalala" } });
console.log(loginHandler);
}
}
let rh = new ResponseHandler();
rh.getResponseFromCOMM("foo", "bar", "baz");