TypeError : 정의되지 않은 '사용자'속성을 읽을 수 없습니다.

XcoemgaX

왜 그런지 모르겠어

this.client는 OnDiscordReady () 함수에서 액세스하려고 할 때 undefined를 반환합니다.

오류 메시지


/home/xcomegax/NCerberus/services/discordS.js:21
        Logger.log(`Discord client logged in as ${this.client.user.tag}`);
                                                              ^

TypeError: Cannot read property 'user' of undefined
    at Client.OnDiscordReady (/home/xcomegax/NCerberus/services/discordS.js:21:63)
    at Client.emit (events.js:203:15)
    at WebSocketConnection.triggerReady (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:125:17)
    at WebSocketConnection.checkIfReady (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:141:61)
    at GuildCreateHandler.handle (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/packets/handlers/GuildCreate.js:13:31)
    at WebSocketPacketManager.handle (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (/home/xcomegax/NCerberus/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
    at WebSocket.onMessage (/home/xcomegax/NCerberus/node_modules/ws/lib/event-target.js:120:16)
    at WebSocket.emit (events.js:198:13)
    at Receiver.receiverOnMessage (/home/xcomegax/NCerberus/node_modules/ws/lib/websocket.js:789:20)
    at Receiver.emit (events.js:198:13)
    at Receiver.dataMessage (/home/xcomegax/NCerberus/node_modules/ws/lib/receiver.js:413:14)
    at Receiver.getData (/home/xcomegax/NCerberus/node_modules/ws/lib/receiver.js:352:17)
    at Receiver.startLoop (/home/xcomegax/NCerberus/node_modules/ws/lib/receiver.js:138:22)
    at Receiver._write (/home/xcomegax/NCerberus/node_modules/ws/lib/receiver.js:74:10)

디버그를 수정하려는 코드> :

const EventEmitter = require('events');
const Logger = require('./loggerS');
const Discord = require('discord.js');
require('dotenv').config();

class discordS extends EventEmitter{
 
    constructor(){
        super();
        this.client = new Discord.Client();
        this.client.on('ready',this.OnDiscordReady);
        this.client.on('message',this.OnDiscordMessage);
        this.client.login(process.env.DiscordAuthToken);
    }

    OnDiscordMessage(msg){
        if(msg.author == this.client.author) return;
    }

    OnDiscordReady(){
        Logger.log(`Discord client logged in as ${this.client.user.tag}`);
    }

}

module.exports = new discordS();

this.client 객체에 액세스하는 능력을 제외하고는 모든 것이 작동하는 것 같습니다. 봇은 로그인 한 다음 '준비'를 표시 한 다음 모든 것이 작동하지 않습니다.

this.client = 대신 생성자에서 Object.assign (this, client : new Discord.Client ())를 사용해 보았습니다.

하지만 그것은 도움이되지 않았습니다.

내가 여기서 무엇을 놓치고 있습니까?

Coderboi

클래스 메서드에는 자체 this범위가 있습니다. 이것이 클래스가 아니기 this.client.user때문에 정의되지 않은 이유 입니다 . 이를 수정하려면 사용 된 각 함수에 대한 생성자 내부에서 수행하거나 화살표 함수를 사용 하여 클래스 자체 의 어휘를 얻을 수 있습니다.thisthis.bind(this)this

const EventEmitter = require('events');
const Logger = require('./loggerS');
const Discord = require('discord.js');
require('dotenv').config();

class discordS extends EventEmitter{

    constructor(){
        super();
        this.client = new Discord.Client();
        this.client.on('ready',this.OnDiscordReady);
        this.client.on('message',this.OnDiscordMessage);
        this.client.login(process.env.DiscordAuthToken);
    }

    OnDiscordMessage = (msg) => { //arrow function
        if(msg.author == this.client.author) return;
    }

    OnDiscordReady =() => { //arrow function
        Logger.log(`Discord client logged in as ${this.client.user.tag}`);
    }

}

module.exports = new discordS();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

TypeError : 정의되지 않은 속성 '문자'를 읽을 수 없습니다.

분류에서Dev

새로운 Reactive 양식 사용자. TypeError : 정의되지 않은 속성 'firstName'을 읽을 수 없습니다.

분류에서Dev

UnhandledPromiseRejectionWarning : TypeError : Sequelize ORM을 사용하여 정의되지 않은 '생성'속성을 읽을 수 없습니다.

분류에서Dev

Uncaught TypeError : proengsoft / laravel-jsvalidation을 사용하여 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

분류에서Dev

React-Uncaught TypeError : Airtable을 사용하여 정의되지 않은 '이름'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 Express의 '사용'속성을 읽을 수 없습니다.

분류에서Dev

ERROR TypeError : formArray를 사용하는 동안 정의되지 않은 '맵'속성을 읽을 수 없습니다.

분류에서Dev

이슬비 사용 중 오류 useCacheCall () : TypeError : 정의되지 않은 'methods'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 상태를 사용할 때 정의되지 않은 '0'속성을 읽을 수 없습니다.

분류에서Dev

MongoError : TypeError : $ or를 사용하는 동안 정의되지 않은 'id'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 '성공'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 '고정'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 '페이지'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 '이미지'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 '이미지'속성을 읽을 수 없습니다.

분류에서Dev

Angular : 정의되지 않은 TypeError의 'routeConfig'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 CryptoJS의 '0'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 API의 'ft'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 ReactJS의 'push'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 Reactjs의 'map'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 자바 스크립트의 'forEach'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 사용자 지정 유효성 검사기를 추가하는 동안 정의되지 않은 Angular의 'indexOf'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 'name'속성을 읽을 수 없습니다 .TypeError : 정의되지 않은 'name'속성을 읽을 수 없습니다.

분류에서Dev

React Jest : TypeError : 정의되지 않은 'map'속성을 읽을 수 없습니다.

분류에서Dev

React TypeError : 정의되지 않은 'getDates'속성을 읽을 수 없습니다.

분류에서Dev

MERN-TypeError : 정의되지 않은 'id'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 'formModel'속성을 읽을 수 없습니다.

분류에서Dev

TypeError : 정의되지 않은 속성 'hasOne'을 읽을 수 없습니다.

분류에서Dev

ReactJs-TypeError : 정의되지 않은 '맵'속성을 읽을 수 없습니다.

Related 관련 기사

  1. 1

    TypeError : 정의되지 않은 속성 '문자'를 읽을 수 없습니다.

  2. 2

    새로운 Reactive 양식 사용자. TypeError : 정의되지 않은 속성 'firstName'을 읽을 수 없습니다.

  3. 3

    UnhandledPromiseRejectionWarning : TypeError : Sequelize ORM을 사용하여 정의되지 않은 '생성'속성을 읽을 수 없습니다.

  4. 4

    Uncaught TypeError : proengsoft / laravel-jsvalidation을 사용하여 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

  5. 5

    React-Uncaught TypeError : Airtable을 사용하여 정의되지 않은 '이름'속성을 읽을 수 없습니다.

  6. 6

    TypeError : 정의되지 않은 Express의 '사용'속성을 읽을 수 없습니다.

  7. 7

    ERROR TypeError : formArray를 사용하는 동안 정의되지 않은 '맵'속성을 읽을 수 없습니다.

  8. 8

    이슬비 사용 중 오류 useCacheCall () : TypeError : 정의되지 않은 'methods'속성을 읽을 수 없습니다.

  9. 9

    TypeError : 상태를 사용할 때 정의되지 않은 '0'속성을 읽을 수 없습니다.

  10. 10

    MongoError : TypeError : $ or를 사용하는 동안 정의되지 않은 'id'속성을 읽을 수 없습니다.

  11. 11

    TypeError : 정의되지 않은 '성공'속성을 읽을 수 없습니다.

  12. 12

    TypeError : 정의되지 않은 '고정'속성을 읽을 수 없습니다.

  13. 13

    TypeError : 정의되지 않은 '페이지'속성을 읽을 수 없습니다.

  14. 14

    TypeError : 정의되지 않은 '이미지'속성을 읽을 수 없습니다.

  15. 15

    TypeError : 정의되지 않은 '이미지'속성을 읽을 수 없습니다.

  16. 16

    Angular : 정의되지 않은 TypeError의 'routeConfig'속성을 읽을 수 없습니다.

  17. 17

    TypeError : 정의되지 않은 CryptoJS의 '0'속성을 읽을 수 없습니다.

  18. 18

    TypeError : 정의되지 않은 API의 'ft'속성을 읽을 수 없습니다.

  19. 19

    TypeError : 정의되지 않은 ReactJS의 'push'속성을 읽을 수 없습니다.

  20. 20

    TypeError : 정의되지 않은 Reactjs의 'map'속성을 읽을 수 없습니다.

  21. 21

    TypeError : 정의되지 않은 자바 스크립트의 'forEach'속성을 읽을 수 없습니다.

  22. 22

    TypeError : 사용자 지정 유효성 검사기를 추가하는 동안 정의되지 않은 Angular의 'indexOf'속성을 읽을 수 없습니다.

  23. 23

    TypeError : 정의되지 않은 'name'속성을 읽을 수 없습니다 .TypeError : 정의되지 않은 'name'속성을 읽을 수 없습니다.

  24. 24

    React Jest : TypeError : 정의되지 않은 'map'속성을 읽을 수 없습니다.

  25. 25

    React TypeError : 정의되지 않은 'getDates'속성을 읽을 수 없습니다.

  26. 26

    MERN-TypeError : 정의되지 않은 'id'속성을 읽을 수 없습니다.

  27. 27

    TypeError : 정의되지 않은 'formModel'속성을 읽을 수 없습니다.

  28. 28

    TypeError : 정의되지 않은 속성 'hasOne'을 읽을 수 없습니다.

  29. 29

    ReactJs-TypeError : 정의되지 않은 '맵'속성을 읽을 수 없습니다.

뜨겁다태그

보관