我正在尝试从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。
答案 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