Ох этот js....
это не js этот а ты, неудосужившийся его выучить.
небольшое пояснение как же происходит так, что ты теряешь контекст
любой ес6 класс не более чем синтаксический сахар
а потом пример класса
class X {
static st(){}
met(){}
}
на самом деле является следующим:
function X(){}
X.st = function (){}
X.prototype.met(){}
Исходя из полученной выше теории разбираем следующий код
exports.try = Gulp.project._compileCSS;
exports.try становится очередной ссылкой метода объекта созданного через класс Gulp, так как ты через ж пытаешься создать синглтон, не оценив мощность подхода замыканий, то и объект твоего класса будем называть Gulp.project, так вот твой метод _compileCSS всего лишь является функцией, ссылка на которую доступна через Gulp.project.__proto__._compileCSS которую ты успешно копируешь в объявленное try. Далее эта функция получается просто выдернутой из твоего класса( читать контекста) и где-то дальше вызывается в ином контексте, что однозначно приводит тебя к описанной выше ошибке.
Итого, решить твою проблему не переписывая твой код можно через
exports.try = Gulp.project._compileCSS.bind(Gulp.project);
PS: за что бы я оторвал руки за такой код
1. использование рекваера в конструкторе
2. использование статического геттера для создания синглтона
3. за отсутствие базы языка
PS2: js не просто си подобный синтаксис, попытки писать на нем без его изучения приводят к катастрофам.
Извини если грубо, но меня бомбит, когда я вижу такое....
И что самое смешное, класс здесь в принципе не нужен вообще
const gulp = require('gulp');
const styl = require('gulp-stylus');
const autoprefix = require('gulp-autoprefixer');
const cleanCSS = require('gulp-clean-css');
module.exports.try = function() {
return gulp.src('../../browser/css/stylus/main.styl')
.pipe(styl())
.pipe(autoprefix({
cascade: false
}))
.pipe(cleanCSS({
level: 2
}))
.pipe(gulp.dest('../../browser/css/'));
}
что-то мне подсказывает что это и проще читать и понимать и написано короче....