I am migrating from node.js to io.js and my old node.js code does not work with jsdom@5.
var jsdom=require('jsdom');
var $=require('jquery')(jsdom.jsdom().createWindow);
Here is the error:
/tmp/iojs/node_modules/jquery/dist/jquery.js:28
if ( !w.document ) {
^
TypeError: Cannot read property 'document' of undefined
at module.exports (/tmp/iojs/node_modules/jquery/dist/jquery.js:28:12)
at Object.<anonymous> (/tmp/iojs/test.js:2:24)
at Module._compile (module.js:431:26)
at Object.Module._extensions..js (module.js:449:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:472:10)
at startup (node.js:124:18)
at node.js:959:3
I am using latest io.js v2.0.1
, [email protected]
and [email protected]
.
What is the right way to use jQuery with jsdom@5?
The following is more in-line with what you are trying to do. Check out the repo
// using Version 5.4.1
var jsdom = require('jsdom').jsdom;
var document = jsdom('<html></html>', {});
var window = document.defaultView;
var $ = require('jquery')(window);
The concrete problem with your original code is that it uses the createWindow
API, which was removed in jsdom 1.0.0-pre.1. (Note that the document.parentWindow
suggested in that change log entry was then itself removed in 4.0.0.)