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?
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.
La mise à niveau du noeud vers la dernière version (v4.5.0) a résolu ce problème.