глотать создание нового экземпляра класса при передаче экземпляра в серию? - PullRequest
0 голосов
/ 31 мая 2019

я использую классы, чтобы сделать мой код немного проще в управлении, однако я получаю сообщение об ошибке:

TypeError: Невозможно прочитать «настройки» свойства undefined

Когда я запускаю серию задач, вот так:

exports.push = series(git.remote, git.add, git.commit, git.push);

В моем gulpfile.js Я создал экземпляр этого класса и передал парудругих экземпляров классов, которые содержат соответствующие данные.

gulpfile.js

/**
 * Clear Console
 */
process.stdout.write('\033c');

/**
 * Require plugins
 */
const chalk = require('chalk');
const log = require('fancy-log');
const { series } = require('gulp');

/**
 * Require includes
 */
const settings = require('./includes/settings.js');
const theme = require('./includes/theme.js');
const git = require('./includes/git.js')(theme, settings);

/**
 * Main tasks
 */
exports.default = (cb) => {
    log(chalk.bgRed('Please run a task, a list has been provided below.'));
    // dump out tasks here
    cb();
};
exports.push = series(git.remote, git.add, git.commit, git.push);
exports.get = git.get;

/**
 * Task descriptions
 * @type {string}
 */
exports.push.description = 'Push the modified theme files to the repository, or create a repository if it doesn\'t exist.';
exports.get.description = 'Pull down a theme\'s repository, ensure to add the --theme flag and the theme name.';

Ниже приведен раздел кода, который вызывает проблемы, я прав, предполагая, что gulp не использует мой экземпляр Git класс и вместо создания нового экземпляра?Если да, то как я могу решить эту проблему?

git.js

class Git
{
    constructor(theme, settings) {

        this.theme = theme;
        this.settings = settings;

        this.init();
    }

    remote(done) {
        git.addRemote('origin', this.settings.get('git_url') + this.theme.folder + '.git', function (err) {
            if (err) {
                if (err.message.indexOf('remote origin already exists' > -1)) {
                    log(chalk.bgYellow.black('Remote already exists, skipping...'));
                } else {
                    console.log(err);
                }
            }
        });
        done();
    }

При дальнейшей проверке у меня нет доступа к свойствам конструкторакогда этот метод запускается через серию gulp ...

Или, если задача выполняется до начальной настройки в верхней части gulpfile.js ?Что не представляется возможным, так как для узла сначала потребуется файл.

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