2016-02-25 2 views
11

Im с использованием autoprefixer с postcss и после перехода на новый сервер Linux что-то должно быть не так, но я не могу понять, что это может быть. Я получаю сообщение об ошибке:Зачем мне «обещание не определено». ошибка в Node v5.7.0

/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 

, срабатывающий:

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

Я исследовал эту проблему, но все вхождения этого вопроса, как представляется, для очень ранних версий node.js, например:

И решение всегда кажется «Update Node».

Но шахта, кажется, быть в курсе:

[[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-prom-is-not-defined # answer-32502195 – Alexandre

ответ

15

Я не могу ответить, почему это происходит, но после переустановки всех пакетов НПХ, я все еще имел ту же ошибку, так что я использовал это очень старое решение «monkeypatch» Promises в узел:

npm install es6-promise 

, а затем добавьте код:

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

И это «решило» проблему.

Edit (год спустя): люди все еще до-голосования этот ответ, так что я просто хочу, чтобы указать на кого встречая этот вопрос получил тонну взглядов и, как представляется, является общей проблемой, учитывая, как странно это - вывод, который я позже сделал, состоял в том, что единственное разумное объяснение состоит в том, что одна из моих библиотек (возможно, многие библиотеки делают то же самое), созданная до того, как были введены обещания, были ли они реализованы вручную и вызвали конфликт, когда Node был обновлен для поддержки обещает официально.

Возможно, у вас есть устаревшая версия поддерживаемой библиотеки по любой причине (иногда это необходимо для предотвращения обслуживания старых серверов) или запуск текущей версии старой библиотеки, которая больше не поддерживается. В любом случае это решение работает.

+0

Спасибо, что отлично поработал (у меня была такая же проблема). Я использовал параметр «-g» для команды установки npm, чтобы сделать ее глобальной. Знаете ли вы, что это будет проблемой? –

+0

Я рекомендую установить с 'npm install es6-prom', потому что версия Promise отличается в каждом случае – chomp

0

Модернизация узла до последней версии (v4.5.0) разрешила эту проблему.

Смежные вопросы