我正在尝试在节点子进程中运行phantomjs。 Phantomjs抱怨它无法找到模块'网页'。从cli运行脚本可以正常工作:
phantomjs script.js
我将问题解决了这两个文件:
main.js:
var script = require('./script');
var cp = require('child_process');
cp.exec('/usr/bin/phantomjs script.js');
的script.js
var page = require('webpage').create();
page.open("http://www.google.com", function(status) {
console.log("opened google? ", status);
var title = page.evaluate(function(s) {
return s;
}, 'Hello');
console.log(title);
phantom.exit();
});
运行以下命令失败:
node main.js
有错误:
module.js:340
throw err;
^
Error: Cannot find module 'webpage'
我试图将cp.exec中的工作目录指定为一个没有效果的选项。有没有办法在全局上下文中为模块设置节点搜索路径,以便可以在新的节点进程中找到它?或者我做错了什么?
答案 0 :(得分:2)
PhantomJS不是node.js模块,不能直接从节点使用。我想您理解这一点,因为您尝试通过child_process
调用它。
问题是行var script = require('./script');
。据我所知,这是phantomjs脚本。由于node.js没有webpage
模块,但是phantomjs确实需要失败以及所有内容。只需删除该行。无论如何,你似乎并没有使用它。