phantomjs在节点的子进程中找不到模块网页

时间:2014-07-30 13:53:51

标签: node.js phantomjs

我正在尝试在节点子进程中运行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中的工作目录指定为一个没有效果的选项。有没有办法在全局上下文中为模块设置节点搜索路径,以便可以在新的节点进程中找到它?或者我做错了什么?

1 个答案:

答案 0 :(得分:2)

PhantomJS不是node.js模块,不能直接从节点使用。我想您理解这一点,因为您尝试通过child_process调用它。

问题是行var script = require('./script');。据我所知,这是phantomjs脚本。由于node.js没有webpage模块,但是phantomjs确实需要失败以及所有内容。只需删除该行。无论如何,你似乎并没有使用它。