为什么我会得到“未定义承诺”。 Node v5.7.0上的错误

时间:2016-02-25 22:44:52

标签: node.js postcss

我正在使用autoprefixerpostcss并且在转移到新的Linux服务器之后,一定有些错误,但我无法弄清楚这个可能是什么。我收到了错误:

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

由以下方式触发:

import pyspark
conf = pyspark.SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('My Jupyter Notebook')

# 'spark.hadoop.foo.bar' sets key 'foo.bar' in the Hadoop Configuaration.
conf.set('spark.hadoop.yarn.resourcemanager.address', '<spark-master-hostname>')
conf.set('spark.hadoop.fs.default.name', 'hdfs://<spark-master-hostname>/')

sc = pyspark.SparkContext(conf=conf)

我研究了这个问题,但问题的所有出现似乎都是针对node.js的极早期版本,例如:

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

但我的似乎是最新的:

default

我的问题可能在这里?

2 个答案:

答案 0 :(得分:18)

我无法回答为什么会发生这种情况,但在重新安装所有npm软件包后,我仍然遇到了同样的错误,所以我使用这个非常古老的解决方案将“monkeypatch”Promises转换为节点:

npm install es6-promise

然后添加代码:

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

并且“解决”了这个问题。

编辑(一年后):人们还在投票给这个答案,所以我只想指出遇到这个问题的任何人,这个问题得到了大量的观点,似乎是一个考虑到它有多奇怪的常见问题 - 我后来做的一个推论是,唯一合理的解释是我的一个库(也许很多库做同样的事情)在承诺引入之前构建,让它们手动实现并在Node时引起冲突更新以正式支持承诺。

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

答案 1 :(得分:0)

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