NodeJS this.var не определено - PullRequest
       7

NodeJS this.var не определено

0 голосов
/ 03 апреля 2020

index. js

const request = require('request');

class ScheduleDownloader {

ScheduleDownloader(schoolId, username, schoolPassword) {
    this.schoolId = schoolId;
    this.username = username;
    this.schoolPassword = schoolPassword;
}

getScheduleAtDate(dateString) {
    console.log(`https://${this.username}:${this.schoolPassword}@www.myurl.de/${this.schoolId}/vplan/vdaten/VplanKl${dateString}.xml`)
    /*request({url: `https://${this.username}:${this.schoolPassword}@www.myurl.de/${this.schoolId}/vplan/vdaten/VplanKl${dateString}.xml`}, (err, res, body) => {
        if(err) console.error(err);
        console.log(body);
    });*/    // COMMENTED OUT FOR TESTING
};

module.exports = ScheduleDownloader;


var s = new ScheduleDownloader(10192417, 'schueler', 'S53998t');
s.getScheduleAtDate(20200317); // For testing in this class

Выход

https://undefined:undefined@mnyurl.de/undefined/vplan/vdaten/VplanKl20200317.xml // undefined
https://www.myurl.de/10192417/vplan/vdaten/VplanKl20200317.xml // What it should be

Как видите, я пытаюсь запросить xml -файл. Я обнаружил, что this.username и так далее не определены. Как я могу это исправить? И в чем причина этого? (Извините, я новичок в Javascript)

Ответы [ 3 ]

2 голосов
/ 03 апреля 2020

В javascript конструктор называется конструктором, а не именем класса, поэтому ваша функция ScheduleDownloader никогда не вызывается. Измените его на конструктор: Некоторое чтение: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

0 голосов
/ 03 апреля 2020

Определение класса настроено неправильно. Я думаю, что вы хотели использовать constructor?

class ScheduleDownloader {

  constructor(schoolId, username, schoolPassword) {
      this.schoolId = schoolId;
      this.username = username;
      this.schoolPassword = schoolPassword;
  }

  getScheduleAtDate(dateString) {
      console.log(`https://${this.username}:${this.schoolPassword}@www.myurl.de/${this.schoolId}/vplan/vdaten/VplanKl${dateString}.xml`)
      /*request({url: `https://${this.username}:${this.schoolPassword}@www.myurl.de/${this.schoolId}/vplan/vdaten/VplanKl${dateString}.xml`}, (err, res, body) => {
          if(err) console.error(err);
          console.log(body);
      });*/    // COMMENTED OUT FOR TESTING
  };
}


var s = new ScheduleDownloader(10192417, 'schueler', 'S53998t');
s.getScheduleAtDate(20200317); // For testing in this class
0 голосов
/ 03 апреля 2020

Это не то, как вы объявляете конструктор в es6. Попробуйте это

constructor(schoolId, username, schoolPassword) {
    this.schoolId = schoolId;
    this.username = username;
    this.schoolPassword = schoolPassword;
}
...