phantomjs-nodify

0.1.1 • Public • Published

phantomjs-nodify

Set of scripts that make PhantomJS environment more similar to Node.js. I implemented what I needed for my scripts. Feel free to fork and add more.

Implemented features:

  • Module support mostly compatible with CommonJS and Node.js, i.e. require() works not only for PhantomJS built-in modules. Most of the functionality from Node.js Modules (up to The module Object) should work. Merged into PhantomJS since PhantomJS 1.7.
  • Exceptions thrown from required files are properly reported (with file name and line number). Line number for .coffee files may not be accurate. Merged into PhantomJS since PhantomJS 1.7.
  • Global process object (some basic functionality + emits uncaughtException on exceptions that occur inside setTimeout blocks).
  • console with string formatting (e.g. console.log('hello %s', 'world')).
  • Some Node.js modules (see lib/modules dir).
  • Other minor tweaks.

Some code taken from Node.js. Uses Mocha + Chai for testing.

How to use

npm install phantomjs-nodify --save

Require in your PhantomJS script at the very first line:

require('phantomjs-nodify');

Stubbing require()

This feature no longer depends on phantomjs-nodify. Since PhantomJS 1.7 it is available in PhantomJS itself, but remains an undocumented secret ;)

Since commit PhantomJS 1.7 you can stub required modules in the given module context which helps porting Node.js libraries. For example, let's say you have a module file a.js in the same directory as your main script. You require this module in the main script (require('./a')). Then, a.js contains:

require.stub('zlib', {
  createGzip: function() { ... }
});
 
var something = require('some_node.js_module_that_requires_zlib');

Now require('zlib') will return the object with the createGzip function in a.js and in every module required by it, but not in parent modules (in this case require('zlib') will throw a "Cannot find module" exception in the main script).

This is especially useful when trying to require libraries written for Node.js which require modules not included in phantomjs-nodify.

Running tests

If you fork and add something, please write tests for it. You can run the tests after fetching the necessary submodules:

git submodule init
git submodule update
make test

Readme

Keywords

none

Package Sidebar

Install

npm i phantomjs-nodify

Weekly Downloads

2

Version

0.1.1

License

none

Last publish

Collaborators

  • esp