我怎样才能在CasperJS中要求MongoDB?

时间:2014-07-14 12:55:42

标签: node.js mongodb npm casperjs

我正在尝试从CasperJS中向MongoDB集合插入记录,但是在第一个障碍我被阻止了。

我首先通过在我的应用程序的根目录中运行以下命令来安装mongodb:

npm install mongodb

成功完成且没有任何错误。

我有一个名为server.js的CasperJS文件,其中包含以下行:

var db = require('mongodb');

当我尝试使用此版本运行casperjs server.js时,出现以下错误:

js-bson: Failed to load c++ bson extension, using pure JS version
Error: Cannot find module 'util'                                                
  /home/aaron/Documents/git/mateserver/phantomjs:/bootstrap.js:289
  /home/aaron/Documents/git/mateserver/phantomjs:/bootstrap.js:254 in require
  /home/aaron/Documents/git/mateserver/node_modules/mongodb/lib/mongodb/commands/insert_command.js:2
  /home/aaron/Documents/git/mateserver/node_modules/mongodb/lib/mongodb/commands/insert_command.js:162

好像我错过了一个包,所以我运行命令:

npm install util

哪个成功运行,所以我尝试再次启动我的应用程序,但得到此错误:

js-bson: Failed to load c++ bson extension, using pure JS version
TypeError: 'undefined' is not a function (evaluating 'inherits(InsertCommand, BaseCommand)')
  /home/aaron/Documents/git/mateserver/node_modules/mongodb/lib/mongodb/commands/insert_command.js:38
  /home/aaron/Documents/git/mateserver/node_modules/mongodb/lib/mongodb/commands/insert_command.js:162

这就是我被困的地方。我该如何解决这个问题? MongoDB与CasperJS不兼容吗?

我正在使用CasperJS版本1.1.0-beta3和MongoDB(通过npm安装)版本1.4.7。主机系统是64位的Ubuntu 14.04。

2 个答案:

答案 0 :(得分:1)

CasperJS在phantomjs上运行,它与node.js具有相似但不同的标准模块。您需要查看mongodb模块内的所有require'd模块,并重写它们以使用phantomjs API而不是node.js API。你可能会遇到一些无法解决的问题。

对于inherits函数,似乎对内部node.js util模块存在循环依赖,无法解析。您可以通过在inherits.js中使用inherits_browser.js覆盖node_modules/util/node_modules/inherits来解决此问题。

答案 1 :(得分:0)

您可以查看SpookyJS,因为它从NodeJS驱动CasperJS