在我的本地 osx 设置中,我安装了 couchdb v1.0.2。我针对此版本编写了几个脚本,所有脚本都运行良好。
在我的远程 Debian 6 服务器上,我最初安装了 Couch v0.11.0。不幸的是,我的几个脚本导致Object.keys is not a function
抛出异常。我认为 v0.11.0 的 javascript 版本较旧,因此我升级到了 Couch v1.1.0。我遵循了这些指示经过一番苦恼,我终于运行了 v1.1.0,但错误并没有消失。我仍然看到Object.keys is not a function
异常。我已确认 Couch 的 v1.1.0 已通过运行安装couchdb -V
,并且我已多次终止/重新启动 Couch、Beam 和 Erlang 的所有实例。
知道发生了什么吗?我升级了 Couch,但我是否还必须单独升级 js 引擎?v0.11.0 的残留是否隐藏在某处?我曾经apt-get remove couchdb
卸载过 v0.11.0。我也曾使用 apt-get 来安装它。
答案1
我认为您没有 v0.11.0 残余。
但是你是对的:CouchDB 中的“Javascript”不是内置的,而是链接到系统中libjs
或libmozjs
。
我不确定如何在 OSX 上获取较新的 Spidermonkey 版本,但是很多人(包括我)使用我的构建 CouchDB正是为此目的而设计的工具。它捆绑了自己的 Spidermonkey 构建,做有Object.keys
、,Array.isArray
还有我最喜欢的[].reduce()
。CouchDB 构建将不会融合的深入到您的操作系统(最终,它只是运行make install
)。但大多数情况下,在 OSX 和 Linux 上,它就像运行一样简单rake
。
如果您尝试构建 CouchDB,请在 GitHub 中报告遇到的任何问题!我尝试让它在当前操作系统上尽可能地运行良好。