Ошибка при экспорте переменной в nodejs - PullRequest
0 голосов
/ 01 сентября 2018

Я хочу экспортировать переменную. но это случается

1-й файл

const commando = require('discord.js-commando');
const ytdl = require('ytdl-core');


class testCommand extends commando.Command {
    constructor(client) {
        super(client,{
            name: 'test',
            group: 'music',
            memberName: 'test',
            description: 'test',
        });

    }

    async run(message, args) {

        var Testo = 'hello'

    }

}

module.exports.Testo = Testo;
module.exports = testCommand;

2-й файл

const commando = require('discord.js-commando');
const ytdl = require('ytdl-core');
var Testotest = require('./test.js')


class pauseCommand extends commando.Command {
    constructor(client) {
        super(client,{
            name: 'pause',
            group: 'music',
            memberName: 'pause',
            description: 'Pause music',
        });

    }


    async run(message, args) {

        message.channel.send(Testotest.Testo())

    }

}

module.exports = pauseCommand;

Error

ReferenceError: Testo is not defined
    at Object.<anonymous> (/Users/andrew/Desktop/NullBot_/commands/music/test.js:27:24)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/andrew/Desktop/NullBot_/commands/music/pause.js:3:17)
    at Module._compile (module.js:652:30)

Почему выдает ошибку?

Ответы [ 3 ]

0 голосов
/ 01 сентября 2018

Вы определили этот файл, я так понимаю, это test.js:

const commando = require('discord.js-commando');
const ytdl = require('ytdl-core');


class testCommand extends commando.Command {
    constructor(client) {
        super(client,{
            name: 'test',
            group: 'music',
            memberName: 'test',
            description: 'test',
        });

    }

    async run(message, args) {
      var Testo = 'hello'
    }
}

// Testo is not defined because is under method run
module.exports.Testo = Testo;
module.exports = testCommand;

Теперь вы можете видеть проблему лучше, потому что она имеет хороший отступ. Этот модуль загружает синхронизацию, и вы экспортируете Testo следующим способом синхронизации, поэтому ожидается ошибка. Если вы хотите это исправить, вам нужно определить «var Testo» вне метода «run» или сделать этот модуль асинхронным.

Привет

0 голосов
/ 03 сентября 2018

Вы определяете Testo в методе run если вы запускаете метод run Testo = 'hello', но вы определяете class testCommand, поэтому Testo равен undefined, вы должны один раз запустить метод run, чтобы определить Testo.

Этот код

module.exports.Testo = Testo;

набор module.exports = {Testo: Testo}

но вы используете

module.exports = testCommand;

набор module.exports = testCommand

Когда вы звоните Testotest.Testo это testCommand.Testo (не определено)

изменить код в 1-м файле:

module.exports = testCommand;
module.exports.Testo = Testo;
0 голосов
/ 01 сентября 2018

Ваша Mayby Gaonna хочет использовать module.exports таким образом.

module.exports = {
    key1: val1,
    key2: val2
}

Итак, ваш код module.exports.Testo = Testo; module.exports = testCommand; может использовать этот формат, и он не будет выдавать ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...