Comment exporter une variable qui est dans une classe dans Nodejs
Ceci est mon fichier loginHandler.js
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Je souhaite accéder à la variable merchantIdsur un autre fichier
const loginHandler = require('./loginHandler')
class ResponseHandler {
getResponseFromCOMM(options,token, res){
console.log(loginHandler.merchantId)
}
}
Mais merchantId n'est pas défini. Pouvez-vous me dire ce que je fais de mal?
Ici vous pouvez voir le code sur Glitch = https://glitch.com/edit/#!/turquoise-spiky-chrysanthemum
Réponses
Mon loginhanderler.js
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Mon index.js
let loginHandler = require('./loginhandler');
let req = {
params: {
merchantId: 'a test',
},
};
loginHandler.returnURLForIframe(req);
console.log(loginHandler.merchantId);
Je l'ai résolu en l'ajoutant à une variable d'environnement sur loginHandler.js
process.env.MERCHANT_ID = req.params.merchantId
puis sur responseHandler.js, j'ai accédé à cette variable
merchantId : process.env.MERCHANT_ID
Vous pouvez le définir comme clé d'objet
class LoginHandler {
constructor() {
this.merchantId = '';
}
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
nouveau LoginHandler
class LoginHandler {
merchantId = "";
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
POUR RÉFÉRENCE FUTURE (également pour moi-même)
Il était difficile de détecter la nature de l'erreur, donc pour moi, il était utile de changer le nom de la variable:
class LoginHandler {
other= "";
returnURLForIframe(req, res) {
other = req.params.merchantId;
}
}
module.exports = new LoginHandler();
Puis j'ai vu que l'erreur était ReferenceError: other is not definedet pouvait la résoudre.
En outre, en plus de la journalisation, il était nécessaire d'appeler returnURLForIframepour voir l'erreur
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");