Node.js 为什么我会得到一个;承诺没有定义;节点v5.7.0上的错误

Node.js 为什么我会得到一个;承诺没有定义;节点v5.7.0上的错误,node.js,postcss,Node.js,Postcss,我正在使用一个新的linux服务器,并且在移动到一个新的linux服务器之后,一定是出了什么问题,但是我不知道这个可能是什么。我得到了一个错误: /home/ec2-user/Enviziion/Muveoo/Server/node_modules/postcss/lib/lazy-result.js:157 this.processing = new Promise(function (resolve, reject) {

我正在使用一个新的linux服务器,并且在移动到一个新的linux服务器之后,一定是出了什么问题,但是我不知道这个可能是什么。我得到了一个错误:

/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的早期版本,例如:

解决方案似乎总是“更新节点”

但我的似乎是最新的:

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

我的问题可能是什么?

我无法回答为什么会发生这种情况,但在重新安装所有npm软件包后,我仍然有相同的错误,因此我使用了这个非常旧的解决方案将“monkeypatch”承诺导入节点:

npm install es6-promise
然后添加代码:

var Promise = require('es6-promise').Promise;
这“解决”了问题

编辑(一年后):人们仍然投票支持这个答案,所以我只想向遇到这个问题的任何人指出,这个问题有很多观点,考虑到它有多奇怪,似乎是一个普遍的问题——我后来做出的一个推论是,唯一合理的解释是我的一个图书馆(可能许多库也做同样的事情)在引入承诺之前构建,手动实现它们,并在更新节点以正式支持承诺时引发冲突


无论出于何种原因,您可能正在运行维护库的旧版本(有时是避免维护旧服务器所必需的),或者正在运行不再维护的旧库的当前版本。无论采用哪种方式,此解决方案似乎都可以工作。

将节点升级到最新版本(v4.5.0)已解决此问题。

是否可以尝试此命令:哪个node@Alexandre
~/.nvm/versions/node/v5.7.0/bin/node
尝试此解决方案:@Alexandre我没有使用gulp,但我假设您想让我尝试删除我的node moldules文件夹并重新安装包,我会尝试。@Alexandre确定我尝试删除node modules文件夹,然后重试安装所有必需的软件包,我甚至尝试安装es6 promise。错误没有改变。编辑:无需担心,使用es6 promise确实有效。谢谢,效果很好(我也遇到了同样的问题)。我使用了“-g”npm install命令的选项使其全局化。您知道这是否会有问题吗?我建议使用
npm install es6 promise
安装,因为promise的版本在每种情况下都不同