gpt4 book ai didi

node.js - CasperJS 与 MongoDB NPM 模块

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:54 33 4
gpt4 key购买 nike

我正在运行 CasperJS 1.1.0-DEV,并且需要 mongoskin NPM 模块将文档插入 Mongodb。

但是使用 mongoskin NPM 模块

var mongo = require('mongoskin')
var db = mongo.db('mongodb://localhost:27017/test', {native_parser: true})')

抛出错误

ReferenceError: Can't find variable: process

/Users/username/casper-test/node_modules/mongoskin/index.js:1
/Users/username/casper-test/node_modules/mongoskin/index.js:2
TypeError: 'undefined' is not a function (evaluating 'mongo.db('mongodb://localhost:27017/test', {native_parser: true})')

test.js:3

如何将 CasperJS 与 NPM 模块(如 mongoskin)一起使用?

最佳答案

CasperJS 构建在 PhantomJS 之上,PhantomJS 本身具有与 Node.js 不同的执行环境。 CasperJS 可以使用与 Node.js 类似的模块基础设施,但大多数 Node 模块不能直接在 CasperJS 中运行。由于 PhantomJS 不提供相同的基本模块,因此您不能使用使用它们的模块。可能无法重写 mongoskin 以使其使用 PhantomJS 模块。

另一种方法是编写一个使用 mongoskin 的 Node.js 脚本,然后通过 child_process module 使用该脚本调用 Node。 。您需要将其与 CasperJS 中的控制流同步,因此您可以使用 casper.waitFor() 来实现:

var execFile = require("child_process").execFile;

casper.callMongoskin = function(then, onTimeout, timeout){
var finished = false;
var results;
execFile("node", ["mongoskin_script.js"], null, function (err, stdout, stderr) {
console.log("execFileSTDOUT:", JSON.stringify(stdout));
console.log("execFileSTDERR:", JSON.stringify(stderr));
results = {stuff: "..."};
finished = true;
});
this.waitFor(function(){
return finished;
}, function _then(){
if (typeof then === "function") {
then.call(this, results);
}
}, onTimeout, timeout);
};
casper.thenCallMongoskin = function(then, onTimeout, timeout){
return this.then(function(){
this.callMongoskin(then, onTimeout, timeout);
});
};

我会让你弄清楚你想要传递什么。以下是你如何使用它:

casper.start(url).thenCallMongoskin(function(results){
require('utils').dump(results);
}).run();

关于node.js - CasperJS 与 MongoDB NPM 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104738/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com