Gulp-autoprefixer ReferenceError atıyor: Promise tanımlanmadı


81

Bir yudum sassımı derleyip sonra autoprefixit ile derlemeye çalışıyorum gulp-autoprefixerama bir hata alıyorum.

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')); 
});

Bunu çalıştırmaya çalışıyorum Gulpfile.jsve kullanıyorum:

"gulp": "~3.9.0",
"gulp-sass": "~2.0.4",
"gulp-autoprefixer": "~3.0.1",

ve NPM versiyonu 1.3.10

Koştuğumda şunu alıyorum 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)

Neyi yanlış yaptığımı gerçekten bilmiyorum. Sass veya düz css kullandığımda çalışmıyor. Sanırım dosyalarımda bir şey var.


1
Hata Autoprefixer tarafından atıldığında, bunun Sass (veya bu konuda CSS) ile ne ilgisi olduğundan emin değilim.
cimmanon

2
Bunun çözüm olup olmadığından emin değilim .... ama NPM sürümünüz güncel değil. Npm'yi ve tüm paketlerinizi güncellemeyi deneyin, daha önce eski sürümleri çalıştırırken bunun gibi tuhaf tuhaflıklar ile karşılaştım.
Benjamin Solum

Yanıtlar:


78

Aynı sorunu yaşadım. Benim için, güncelleme düğümü işe yaramadı, ancak bunu gulpfile'ımın en başına eklemek:

require('es6-promise').polyfill();

Bu iyi bir "düzeltme", daha iyi bir çözüm node.js upate (@Matei cevabını bakınız) olduğu
Mark

1
@MonkeyKing, cevabımda söylediğim gibi, düğümün güncellenmesi sorunu çözmedi
Chris Searles

4
ne paketi? Anlıyorumcannot find module es6-promise
Victor

3
@Victor npm install es6-promiseterminalinizde koşmayı deneyin
Michael

66

Aşağıdakileri kullanarak node.js'yi en son sürüme güncelledim:

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Ubuntu makinem için burada gösterildiği gibi .

Bundan sonra NPM'yi şu şekilde güncelledim:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Gibi gösterilen burada .

Şimdi gulp-autoprefixerçalışmaya başladım ama bir hata aldım gulp-sass. Bu talimatı kullanarak güncelledim:

  1. Node_modules klasörünüzü silin
  2. Gulp-sass dosyasını package.json dosyanızdan kaldırın
  3. Node-sass'ı package.json dosyanızdan kaldırın (eğer varsa)
  4. Npm install gulp-sass --save-dev komutunu çalıştırın
  5. Gulp görevinizi gerektiği gibi güncelleyin

Bulunan burada ben var .Şimdi "gulp-sass": "^2.0.4"ve bu tüm sorunlarımı düzeltildi.

Tavsiye ve yardım için teşekkürler.


11
Düğümü yükselttikten sonra node-sassçalışmaya başlayabilirsiniz npm rebuild node-sass.
Hugh -Grigg

sadece harika çalıştı. Teşekkürler. ayrıca konsol mesajı, görevi çalıştırırken bir hatayla karşılaştığınızda bu komutu çalıştırmanızı ister
Pushpak Patel

1
Bu gerçekten bir NodeJS sürüm sorunu, bkz. Github.com/sindresorhus/gulp-autoprefixer/issues/45
tricasse

İyi talimatlar. İşletim sisteminden bağımsız talimatlar nodesource.com/services/upgrade-self-service
toad

Bu adımlara ihtiyacım yoktu: sudo npm cache clean -f sudo npm install -g n sudo n stableve npm rebuild node-sassnode-sass problemini çözmek için kullanılır . :)
Edu Ruiz

29

Package.json'un bulunduğu proje konumuna es6-promise'ı kurun

npm install es6-promise

Ardından, gulpfile.js kodunuzun ilk satırını aşağıdaki kod yapın:

var Promise = require('es6-promise').Promise;

2

Bu, soruyu doğrudan yanıtlamaz, ancak ionic 2 eğitimini çalıştırmaya çalışırken bu hatayı alan kişiler için yararlı olabilir.

Diğer cevapların da işaret ettiği gibi, sorun es6-promiseeksiktir.

İonic 2 öğreticisini başlatmaya çalışırken aynı hatayı aldım ( https://github.com/driftyco/ionic2-starter-tutorial ): (ionic 2 sürümüm 2.0.0-beta.25 ve en son eğitici kaydetme ed9ef2fcce887e4d1c08c375c849b06b8394bad7 )

Bu, uygulamayı çalıştırmaya çalışırken aldığım yığın izidir 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) 

Yine, diğer cevapların da işaret ettiği gibi, bunu şu şekilde çözebilirsiniz:

  1. gulpfile.js dosyasını düzenleyin ve 6. satıra ekleyin: require('es6-promise').polyfill();

  2. eksik bağımlılığı şununla yükleyin: npm install es6-promise --save

Bu değişikliklerden sonra sorun çözüldü ve yerel sunucuyu başlatabildim.


Bu benim için sorunu çözdü, tek yapmam gereken --save ile npm install es6-promise'ı kullanmak ve bunu .pollyfill ile kullanmaktı, yukarıdaki bir tentede olduğu gibi .Promise () kullanarak benim için işe yaramadı.
killstreet
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.