2015-09-09 13 views
80

私はgulpをgulp-autoprefixerでautoprefixitをコンパイルしようとしていますが、エラーが発生しています。Gulp-autoprefixer throw ReferenceError:Promiseが定義されていません

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を実行しようとしていると私が使用している:

/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) 
:私は gulp testを実行すると

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

とNPMバージョン1.3.10

を私はこの取得します

私は何が間違っているのか分かりません。私は草や平らなCSSを使用するときに動作していません。私は私のファイルで何かと思います。

+1

Autoprefixerによってエラーがスローされているときに、これがSass(またはその点ではCSS)とどのような関係があるのか​​不明です。 – cimmanon

+2

これが解決策であるかどうかはわかりませんが、NPMのバージョンは古くなっています。 npmとすべてのパッケージを更新してみてください。以前のビルドを実行する前に、このような変わった癖に陥りました。 –

答えて

65

私が使用して最新バージョンにNode.jsの更新:hereを示したように、私のUbuntuマシン用

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

その後、私が使用してNPMを更新:hereを示すように

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

を。

今すぐgulp-autoprefixerが機能し始めますが、エラーが発生しましたgulp-sassです。

  • あなたのpackage.jsonファイルから

    1. あなたnode_modulesフォルダを削除
    2. 削除一気-SASSあなたがそこにそれを持っている場合は、あなたのpackage.jsonファイル(からノード-SASSを削除します。私はこの命令を使用して、それを更新します)
    3. 実行NPMインストール一気-SASS --save-devの
    4. 私は0を持っている.Now here見つかり

    を必要に応じて、あなたのがぶ飲みタスクを更新とこれはすべての私の問題を修正しました。

    アドバイスありがとうございました。

    +11

    ノードをアップグレードした後、 'npm rebuild node-sass'で' node-sass'を動作させることができます。 – xiuyuan

    +0

    はうまく機能しました。ありがとう。 –

    +1

    これは実際にNodeJSバージョンの問題です。https://github.com/sindresorhus/gulp-autoprefixer/issues/45 – tricasse

    78

    同じ問題がありました。私にとっては、ノードが動作しませんでした更新が、私gulpfileの先頭にこれを追加することはなかった:

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

    これは私の問題を解決しました。 –

    +2

    これも私のために働いた。どんな考え? – Barryman9000

    +0

    ちょうど何が起こったのか?昨日はすべて正常に構築されていました... –

    29

    はpackage.jsonが

    npm install es6-promise 
    

    が次に作る存在ウルプロジェクトの場所でES6-約束を取り付けこれは、直接の質問に答えていませんが、それは、イオンを実行しようとしたときに、このエラーを取得する人々のために有用であるかもしれない

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

    :あなたのgulpfile.jsの最初の行は、次のコードで2チュートリアル。

    他の回答で指摘されているように、問題は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) 
      

      を、これはこの問題を解決する方法です

    1. 編集gulpfile.jsと6行目に追加します。require('es6-promise').polyfill();

    2. がで不足している依存関係をインストールします。この変更後npm install es6-promise --save

    、問題が修正されましたし、私は、ローカルサーバを起動することができました。

    +0

    これは問題を解決しました。保存し、これを.pollyfillで使用する必要があります。上記のawnserのように.Promise()を使用すると、うまくいきませんでした。 – killstreet

    関連する問題