Gulp -autoprefixer throwing ReferenceError: обещание не определено
Я пытаюсь сделать gulp компиляцию моего sass, затем autoprefixit с помощью gulp-autoprefixer
, но я получаю сообщение об ошибке.
var gulp = require('gulp'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer');
gulp.task('test', function(){
gulp.src('_sass/main.sass')
.pipe(sass())
.pipe(autoprefixer())
.pipe(gulp.dest('./assets/css'));
});
Я пытаюсь запустить этот Gulpfile.js
, и я использую:
"gulp": "~3.9.0",
"gulp-sass": "~2.0.4",
"gulp-autoprefixer": "~3.0.1",
и версия NPM 1.3.10
Когда я запустил gulp test
, я получаю следующее:
/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152
this.processing = new Promise(function (resolve, reject) {
^
ReferenceError: Promise is not defined
at LazyResult.async (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:152:31)
at LazyResult.then (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:75:21)
at DestroyableTransform._transform (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/index.js:28:13)
at DestroyableTransform.Transform._read (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:172:10)
at DestroyableTransform.Transform._write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:160:12)
at doWrite (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:326:12)
at writeOrBuffer (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:312:5)
at DestroyableTransform.Writable.write (/home/matei/Tests/test-4/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:239:11)
at write (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:623:24)
at flow (/home/matei/Tests/test-4/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:632:7)
Я не знаю, что я делаю неправильно. Не работает, когда я использую sass или plain css. Я думаю, что это что-то с моими файлами.
Ответы
Ответ 1
Я обновил node.js до последней версии, используя:
# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
для моей машины Ubuntu, как показано здесь.
После этого я обновил NPM, используя:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Как показано здесь.
Теперь gulp-autoprefixer
начинает работать, но я получил ошибку от gulp-sass
. Я обновил его с помощью этой инструкции:
- Удалите папку node_modules
- Удалите gulp -sass из вашего файла package.json
- Удалите node -sass из вашего файла package.json(если он у вас там)
- Запустить npm install gulp -sass --save-dev
- При необходимости обновите задачу Gulp
Нашел здесь. Теперь у меня есть "gulp-sass": "^2.0.4"
, и это устраняет все мои проблемы.
Спасибо за советы и помощь.
Ответ 2
Была та же проблема. Для меня обновление node не сработало, но добавив это в самом начале моего gulpfile:
require('es6-promise').polyfill();
Ответ 3
Установить es6-обещание в месте проекта ur, где package.json существует
npm install es6-promise
Затем сделайте первую строку вашего gulpfile.js следующим кодом:
var Promise = require('es6-promise').Promise;
Ответ 4
Это не отвечает на вопрос напрямую, но может быть полезно для людей, которые получают эту ошибку при попытке запустить ионный учебник.
Как указано в других ответах, проблема в том, что es6-promise
отсутствует.
У меня такая же ошибка при попытке запустить ионный учебник 2 (https://github.com/driftyco/ionic2-starter-tutorial):
(моя ионная версия 2 - 2.0.0-beta.25, а последняя инструкция по обучению - ed9ef2fcce887e4d1c08c375c849b06b8394bad7)
Это трассировка стека, которую я получил при попытке запустить приложение с помощью ionic serve
:
Running 'serve:before' gulp task before serve
[18:37:00] Starting 'clean'...
[18:37:01] Finished 'clean' after 1.02 s
[18:37:01] Starting 'watch'...
[18:37:01] Starting 'sass'...
[18:37:01] Starting 'html'...
[18:37:01] Starting 'fonts'...
[18:37:01] Starting 'scripts'...
[18:37:01] Finished 'scripts' after 62 ms
[18:37:01] Finished 'html' after 72 ms
[18:37:01] Finished 'fonts' after 77 ms
Caught exception:
ReferenceError: Promise is not defined
at LazyResult.async (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:157:31)
at LazyResult.then (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/postcss/lib/lazy-result.js:79:21)
at DestroyableTransform._transform (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/index.js:24:6)
at DestroyableTransform.Transform._read (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:159:10)
at DestroyableTransform.Transform._write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:147:83)
at doWrite (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:313:64)
at writeOrBuffer (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:302:5)
at DestroyableTransform.Writable.write (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-autoprefixer/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js:241:11)
at DestroyableTransform.ondata (/home/stitakis/dev/playground/ionic2/myTutorial/node_modules/ionic-gulp-sass-build/node_modules/gulp-sass/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js:531:20)
at DestroyableTransform.EventEmitter.emit (events.js:95:17)
Опять же, как указывают другие ответы, вот как это можно решить:
После этого изменения проблема была исправлена, и я смог запустить локальный сервер.