簡體   English   中英

如何導出Nodejs中類中的變量

[英]How to export a variable which is in a class in Nodejs

這是我的文件 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

我通過將它添加到 loginHandler.js 上的環境變量來解決它

process.env.MERCHANT_ID = req.params.merchantId

然后在 responseHandler.js 上,我訪問了那個變量

merchantId : process.env.MERCHANT_ID

我的 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);

您可以將其定義為對象鍵

class LoginHandler {
  constructor() {
    this.merchantId = '';     
  }

    returnURLForIframe(req, res) {
      this.merchantId = req.params.merchantId;
    }  
}

新的登錄處理程序

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM