Search code examples
node.jsnpmgulpautoprefixer

Gulp-autoprefixer throwing ReferenceError: Promise is not defined


I try to make a gulp compile my sass then autoprefixit with gulp-autoprefixer but i'm getting an error.

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

I'm trying to run this Gulpfile.js and i'm using :

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

and NPM version 1.3.10

When i run gulp test i get this :

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

I don't really know what i'm doing wrong. Is not working when i use sass or plain css. I think is something with my files.


Solution

  • I updated node.js to the latest version using :

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

    for my Ubuntu machine, as shown here.

    After that i updated NPM using :

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

    As shown here.

    Now the gulp-autoprefixer start working but i got an error from gulp-sass. I updated it using this instruction :

    1. Delete your node_modules folder
    2. Remove gulp-sass from your package.json file
    3. Remove node-sass from your package.json file (if you have it in there)
    4. Run npm install gulp-sass --save-dev
    5. Update your Gulp task as required

    Found here.Now i have "gulp-sass": "^2.0.4" and this fixed all my problems.

    Thanks for advice and help.