繁体   English   中英

NodeJS this.var 未定义

[英]NodeJS this.var is undefined

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

Output

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 新手)

在 javascript 构造函数被称为构造函数,而不是 class 的名称,所以你的 function ScheduleDownloader 永远不会被调用。 将其更改为构造函数:一些阅读: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

这不是你在 es6 中声明构造函数的方式。 尝试这个

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

您的class定义设置不正确。 我认为您的意思是使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM