我正在使用 autoprefixer与 postcss移动到新的 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,例如:
而且解决方案似乎总是“更新 Node ”。
但我的似乎是最新的:
[ec2-user@ip-172-31-22-79 Server]$ node -v
v5.7.0
我的问题可能在这里?
最佳答案
我无法回答为什么会这样,但是在重新安装所有 npm 包后,我仍然遇到同样的错误,所以我使用这个非常旧的解决方案将“monkeypatch”Promises 放入 Node :
npm install es6-promise
然后添加代码:
var Promise = require('es6-promise').Promise;
这“解决了”问题。
编辑(一年后):人们仍在对这个答案投赞成票,所以我只想向遇到这个问题的人指出,这个问题已经获得了大量的意见,而且似乎是一个考虑到它有多奇怪的一个常见问题 - 我后来做出的一个推论是,唯一合理的解释是我的一个库(也许很多库都做同样的事情)在引入 Promise 之前构建,手动实现它们并在 Node 时导致冲突已更新以正式支持 promise 。
无论出于何种原因(有时为了避免维护旧服务器所必需),您都可能正在运行已维护库的旧版本,或者正在运行不再维护的旧库的当前版本。无论哪种方式,这个解决方案似乎都有效。
关于node.js - 为什么我会在 Node v5.7.0 上收到 "Promise is not defined."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639924/