【问题标题】:Why would I get a "Promise is not defined." error on Node v5.7.0为什么我会收到“未定义承诺”。节点 v5.7.0 上的错误
【发布时间】:2016-06-08 23:20:20
【问题描述】:

我正在使用autoprefixerpostcss,在移动到新的 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

我的问题可能在这里?

【问题讨论】:

  • 你能试试这个命令吗:哪个节点
  • @Alexandre ~/.nvm/versions/node/v5.7.0/bin/node
  • 试试这个解决方案:stackoverflow.com/questions/32490328/…
  • @Alexandre 我没有使用 gulp,但我假设您希望我尝试删除我的节点模块文件夹并重新安装软件包,我会尝试的。
  • @Alexandre 好的,我尝试删除节点模块文件夹,并重新安装所有必需的包,我什至尝试安装 es6-promise。错误没有改变。编辑:没关系,使用 es6-promise 确实有效。

标签: node.js postcss


【解决方案1】:

我无法回答为什么会这样,但是在重新安装所有 npm 包后,我仍然遇到同样的错误,所以我使用这个非常旧的解决方案将“monkeypatch”Promises 放入节点:

npm install es6-promise

然后添加代码:

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

这“解决了”问题。

编辑(一年后):人们仍在对这个答案投赞成票,所以我只想向遇到这个问题的人指出,这个问题已经获得了大量的意见,而且似乎是一个考虑到它有多奇怪的一个常见问题 - 我后来做出的一个推论是,唯一合理的解释是我的一个库(也许很多库都做同样的事情)在引入 Promise 之前构建,手动实现它们并在 Node 时导致冲突已更新以正式支持承诺。

无论出于何种原因(有时为了避免维护旧服务器所必需),您可能正在运行已维护库的旧版本,或者正在运行不再维护的旧库的当前版本。无论哪种方式,这个解决方案似乎都有效。

【讨论】:

  • 谢谢,效果很好(我遇到了同样的问题)。我使用 npm install 命令的“-g”选项使其成为全局的。你知道这会不会有问题?
  • 我建议使用npm install es6-promise 安装,因为每种情况下 Promise 的版本都不同
【解决方案2】:

将节点升级到最新版本(v4.5.0)确实解决了这个问题。

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多