web-dev-qa-db-fra.com

Gulp-autoprefixer renvoyant ReferenceError: la promesse n'est pas définie

J'essaie de faire une gorgée compiler mon sass puis autoprefixit avec gulp-autoprefixer mais je reçois une erreur.

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

J'essaie de courir ceci Gulpfile.js et j'utilise:

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

et NPM version 1.3.10

Quand je cours gulp test j'ai compris :

/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)

Je ne sais pas vraiment ce que je fais mal. Ne fonctionne pas quand j'utilise Sass ou Plain CSS. Je pense est quelque chose avec mes fichiers.

81
Matei

J'ai mis à jour node.js avec la dernière version en utilisant:

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

pour ma machine Ubuntu, comme indiqué ici .

Après cela, j'ai mis à jour NPM en utilisant:

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

Comme indiqué ici .

Maintenant le gulp-autoprefixer commence à travailler mais j’ai une erreur de gulp-sass. Je l'ai mis à jour en utilisant cette instruction:

  1. Supprimer votre dossier node_modules
  2. Supprimer gulp-sass de votre fichier package.json
  3. Supprimez node-sass de votre fichier package.json (si vous en avez un)
  4. Lancer npm installer gulp-sass --save-dev
  5. Mettez à jour votre tâche Gulp si nécessaire

Trouvé ici . Maintenant, j'ai "gulp-sass": "^2.0.4" et cela a résolu tous mes problèmes.

Merci pour les conseils et l'aide.

66
Matei

Avait le même problème. Pour moi, la mise à jour du noeud ne fonctionnait pas, mais l'ajouter au tout début de mon fichier gulpf a eu les effets suivants:

require('es6-promise').polyfill();
78
Chris Searles

Installez es6-promise à l'emplacement du projet où existe package.json

npm install es6-promise

Ensuite, faites que la première ligne de votre fichier gulpfile.js soit le code suivant:

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

Cela ne répond pas directement à la question, mais il peut être utile aux personnes qui rencontrent cette erreur lors de l’exécution du didacticiel ionic 2).

Comme indiqué par d’autres réponses, le problème est que es6-promise Est manquant.

J'ai eu la même erreur en essayant de démarrer le tutoriel ionic 2 ( https://github.com/driftyco/ionic2-starter-tutorial) ): (my = ionic 2 est 2.0.0-beta.25 et le dernier didacticiel valide est ed9ef2fcce887e4d1c08c375c849b06b8394bad7)

Voici la trace de la pile que j'ai obtenue en essayant de lancer l'application avec 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) 

Encore une fois, comme indiqué par d’autres réponses, voici comment résoudre ce problème:

  1. éditez gulpfile.js et ajoutez à la ligne 6: require('es6-promise').polyfill();

  2. installez la dépendance manquante avec: npm install es6-promise --save

Une fois ces modifications apportées, le problème a été résolu et j'ai pu démarrer le serveur local.

2
stitakis