web-dev-qa-db-fra.com

Pourquoi devrais-je obtenir une "promesse n'est pas définie." erreur sur le noeud v5.7.0

En utilisant autoprefixer avec postcss et après avoir migré sur un nouveau serveur Linux, quelque chose doit être faux mais je ne peux pas comprendre ce que celui-ci pourrait être. Je reçois l'erreur:

/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

Qui est déclenché par:

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

J'ai effectué des recherches sur ce problème, mais toutes les occurrences du problème semblent concerner des versions extrêmement anciennes de node.js, par exemple:

Et la solution semble toujours être "Update Node".

Mais le mien semble être à jour:

[ec2-user@ip-172-31-22-79 Server]$ node -v
v5.7.0

Quel pourrait être mon problème ici?

12
user5536767

Je ne peux pas dire pourquoi cela se produit, mais après la réinstallation de tous les paquets npm, j'avais toujours la même erreur. J'ai donc utilisé cette très ancienne solution pour "monkeypatch" Promises in node: 

npm install es6-promise

puis ajoutez le code:

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

Et cela "résolut" le problème. 

Edit (un an plus tard): les gens votent toujours pour cette réponse, je tiens donc à signaler à quiconque ce problème, que la question a suscité beaucoup de points de vue et semble être un problème récurrent compte tenu de l'étrangeté Une déduction que j’ai faite plus tard, c’est que la seule explication raisonnable est que l’une de mes bibliothèques (peut-être plusieurs le font-elles de la même façon) construite avant l’introduction des promesses, les a-t-elle implémentées manuellement et a-t-elle provoqué un conflit lorsque Node a été mis à jour pour tenir officiellement les promesses . 

Vous exécutez peut-être une version héritée d'une bibliothèque maintenue pour une raison quelconque (parfois nécessaire pour éviter la maintenance de vos anciens serveurs) ou exécutez une version actuelle d'une ancienne bibliothèque qui n'est plus maintenue. Quoi qu'il en soit, cette solution semble fonctionner. 

18
user5536767

La mise à niveau du noeud vers la dernière version (v4.5.0) a résolu ce problème.

0
Praveen Bijja