Makes PhantomJS more compatible with Node.js
npm install phantomjs-nodifyphantomjs-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:
``js`
require('phantomjs-nodify');
*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 requirerequire('./a')
this module in the main script (). Then, a.js contains:
`js
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 ina.js and in every module required by it, but not in parent modules (in thisrequire('zlib')` will throw a "Cannot find module" exception in the main
case
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