2016-02-25 14 views
11

autoprefixerpostcssを使用し、新しいLinuxサーバーに移動した後、何かが間違っている必要がありますが、これが何であるか把握できません。 、私はこの問題を調査したが、問題の発生がすべてのNode.jsの非常に初期のバージョンのように見える「プロミスは定義されていません」と表示されるのはなぜですか?ノードv5.7.0のエラー

var autoprefixer = require('autoprefixer'); 
var postCSS = require('postcss'); 

function prefix(css, res, type, fullPath) { 
    postCSS([autoprefixer]).process(css).then(function(result) { 
     var css = result.css; 
     var length = css.length; 
     res.writeHead(200, { 
      'Content-Length' : length, 
      'Content-Type' : type 
     }); 
     res.write(css); 
     res.end(); 
    }); 
} 

/home/ec2-user/Enviziion/Muveoo/Server/node_modules/postcss/lib/lazy-result.js:157 
     this.processing = new Promise(function (resolve, reject) { 
          ^
ReferenceError: Promise is not defined 

によってトリガーされる:私はエラーを取得しています例えば:

解決策は常に「更新ノード」のようです。

しかし、鉱山は最新のものであるように思わ:

[[email protected] Server]$ node -v 
v5.7.0 

何私の問題はここにあるかもしれませんか?

+0

このコマンドを試してください: – Alexandre

+0

@Alexandre '〜/ .nvm/versions/node/v5.7.0/bin/node' –

+0

この解決策を試してください:http://stackoverflow.com/questions/32490328/gulp -autoprefixer-throwing-referenceerror-promise-is-not-defined#答え-32502195 – Alexandre

答えて

15

なぜこれが起こっている私が答えるカントが、すべてのNPMパッケージを再インストールした後、私はまだ同じエラーを持っていたので、私は「モンキーパッチは」ノードに約束するために、この非常に古いソリューションを使用:

npm install es6-promise 

、その後、コードを追加してください:

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

そして、それは問題を "解決"しました。

編集(年後):人々がアップ議決まだこの答え私はちょうどこのに遭遇誰にも指摘したいので、ご質問は、ビューのトンを得て、どのように考えると、共通の問題であるように思わました私が後で控除したのは、約束が導入される前にビルドされたライブラリ(おそらく多くのライブラリが同じことをしている)が手作業で実装されていて、Nodeがサポートを更新したとき正式に約束します。

何らかの理由で(以前のサーバーのメンテナンスを避けるために必要な場合があります)、メンテナンスされていない古いライブラリの現在のバージョンを実行している場合があります。どちらの方法でも、この解決策はうまくいくと思われます。

+0

ありがとう、それは素晴らしい(私は同じ問題があった)働いた。グローバルにするには、npm installコマンドに "-g"オプションを使用しました。それが問題になるかどうか分かりますか? –

+0

Promiseのバージョンがそれぞれ異なるため、 'npm install es6-promise'でインストールすることをお勧めします – chomp

0

ノードを最新バージョン(v4.5.0)にアップグレードすると、この問題は解決されました。

関連する問題