NodeJS class 总是 returns 未定义

NodeJS class always returns undefined

我试图将值从一个 class 传递到另一个 js 文件,但在所有尝试中它总是 returns 我未定义。 这是我的舞台

config.js

class Token {
  _token = '';

  constructor(token) {
    this._token = token;
  }

  get getToken() {
    return this._token;
  }
}

class Url {
  get getUrl() {
    return 'https://api.com';
  }
}

exports.token = Token;
exports.url = Url;

instance.js

const config = require('./config');

let tkn = new config.token();
console.log('tkn', tkn.getToken);
console.log('TKN', config.token.getToken);

let url = new config.url();
console.log('URL', config.url.getUrl);
console.log('url', tkn.getUrl);

脚本的正确用法是

const config = require('./config');

let tkn = new config.token('value');
//                         ^^^^^^^^
console.log('tkn', tkn.getToken); // value

let url = new config.url();
console.log('url', url.getUrl); // https://api.com
//                 ^^^

您定义的 getter 属性不是静态的,您无法在 config.tokenconfig.url 上访问它们。

这里我评论了问题:

const config = require('./config');

let tkn = new config.token(); // Token constructor expects an argument.
console.log('tkn', tkn.getToken); // This is correct and will work provided the constructor argument.
console.log('TKN', config.token.getToken); // You must instantiate the token and use the instance.

let url = new config.url();
console.log('URL', config.url.getUrl); // Same as with the token. It must be instantiated and getUrl accessed through that instance.
console.log('url', tkn.getUrl); // Here you're trying to call getUrl of the Token class but it doesn't exist.

固定版本

const config = require('./config');

let tkn = new config.token("token");
console.log('tkn', tkn.getToken);

let url = new config.url();
console.log('URL', url.getUrl);

您的 instance.js 文件将类似于此

const config = require('./config');
config.url.getUrl();

和config.js文件

class Token {
        _token = '';

        constructor(token) {
          this._token = _token;
        }

        static getToken() {

          return this._token;

        }
      }

      class Url {
        static getUrl() {
          //return 'https://api.com';
          console.log("something")
        }
      }

      exports.token = Token;
      exports.url = Url;