phantomjs cannot find module webpage in node's child process

I'm trying to run phantomjs in a node child process. Phantomjs complains it can not find module 'webpage'. Running the script from the cli works fine:

phantomjs script.js

I stripped the problem down to these two files:

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();
 });

Running the following command fails:

node main.js

with error:

module.js:340
   throw err;
      ^
Error: Cannot find module 'webpage'

I've tried to specify the working directory in cp.exec as an option without effect. Is there a way to set the node search path for modules in a global context so it can be found in a new node process? Or am I doing something else wrongly?

PhantomJS is not a node.js module and cannot be directly used from node. I think you understand this, because you try to invoke it via child_process.

The problem is the line var script = require('./script');. As I understand, it is the phantomjs script. Since node.js doesn't have a webpage module, but phantomjs does the require fails and everything with it. Simply remove the line. It doesn't seem like you use it anyway.