通过JSDom的JQuery不是一个赋予TypeError的函子

IO.js 1.3.0在Windows上使用带有Mocha 2.0.1的JSDOM 4.0.1和jQuery 2.1.1

以下代码:

var chai = require('chai'); var jsdom = require('jsdom'); describe('JSDOM', function () { var $; beforeEach(function () { global.document = jsdom.jsdom('<html><body><section id="banner"></section></body></html>'); global.window = global.document.defaultView; global.navigator = global.window.navigator; $ = global.jQuery = require('jquery')(global.window); }) it('Using jquery', function () { var dom = $("#banner"); }); }); 

当使用JQueryselect器作为函子时(例如$(…)), TypeError:object的错误不是函数 。 任何人遇到这个,并有一个解决方法?

问题是你正在设置global.windowglobal.document 。 jQuery正在检查它们是否在浏览器中运行。

这导致require('jquery')(global.window)包装窗口,而不是运行jquery工厂函数,就像$(window)会。