Nodejsのクラスにある変数をエクスポートする方法
Aug 24 2020
これは私のファイルloginHandler.jsです
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
merchantId
別のファイルの変数にアクセスしたい
const loginHandler = require('./loginHandler')
class ResponseHandler {
getResponseFromCOMM(options,token, res){
console.log(loginHandler.merchantId)
}
}
ただし、merchantIdは未定義です。私が間違っていることを教えていただけますか?
ここでは、Glitch =のコードを見ることができます。 https://glitch.com/edit/#!/turquoise-spiky-chrysanthemum
回答
1 Karlan Aug 24 2020 at 10:46
私のloginhanderler.js
class LoginHandler {
merchantId = '';
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
私のindex.js
let loginHandler = require('./loginhandler');
let req = {
params: {
merchantId: 'a test',
},
};
loginHandler.returnURLForIframe(req);
console.log(loginHandler.merchantId);
1 NehalJaisalmeria Aug 25 2020 at 11:50
loginHandler.jsの環境変数に追加して解決しました
process.env.MERCHANT_ID = req.params.merchantId
次に、responseHandler.jsで、その変数にアクセスしました
merchantId : process.env.MERCHANT_ID
SarathPS Aug 24 2020 at 11:18
オブジェクトキーとして定義できます
class LoginHandler {
constructor() {
this.merchantId = '';
}
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
malarres Aug 24 2020 at 11:32
新しいLoginHandler
class LoginHandler {
merchantId = "";
returnURLForIframe(req, res) {
this.merchantId = req.params.merchantId;
}
}
module.exports = new LoginHandler();
将来の参考のために(私自身のためにも)
エラーが何であるかを検出するのは混乱していたので、私にとっては変数の名前を変更すると役に立ちました。
class LoginHandler {
other= "";
returnURLForIframe(req, res) {
other = req.params.merchantId;
}
}
module.exports = new LoginHandler();
それから私はエラーがあったことを見て、それをReferenceError: other is not defined
解決することができました。
また、ロギングに加えてreturnURLForIframe
、エラーを確認するために呼び出す必要がありました
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");