如何在 Nodejs 中导出 class 中的变量

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

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

我通过将它添加到 loginHandler.js

上的环境变量来解决它

process.env.MERCHANT_ID = req.params.merchantId

然后在 responseHandler.js,我访问了那个变量

merchantId : process.env.MERCHANT_ID