通过JSDom的JQuery是';给出类型错误的函子
在Windows上使用JSDOM4.0.1、Mocha2.0.1和jquery 2.1.1的IO.js 1.3.0 以下代码:通过JSDom的JQuery是';给出类型错误的函子,jquery,node.js,mocha.js,jsdom,io.js,Jquery,Node.js,Mocha.js,Jsdom,Io.js,在Windows上使用JSDOM4.0.1、Mocha2.0.1和jquery 2.1.1的IO.js 1.3.0 以下代码: var chai = require('chai'); var jsdom = require('jsdom'); describe('JSDOM', function () { var $; beforeEach(function () { global.document = jsdom.jsdom('<html><body>&
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");
});
});
var chai=require('chai');
var jsdom=require('jsdom');
描述('JSDOM',函数(){
var$;
beforeach(函数(){
global.document=jsdom.jsdom(“”);
global.window=global.document.defaultView;
global.navigator=global.window.navigator;
$=global.jQuery=require('jQuery')(global.window);
})
它('使用jquery',函数(){
var dom=$(“#banner”);
});
});
使用TypeError时出错:尝试将JQuery选择器用作函子时,对象不是函数(即$(…)。还有谁遇到这个问题并有解决办法吗 问题在于您正在设置set
global.window
和global.document
。jQuery正在检查是否在浏览器中运行
这会导致
require('jquery')(global.window)
包装窗口,而不是运行jquery工厂函数,就像$(window)
那样。直到找到jquery没有正确初始化(作为必需模块)的根本原因,我才将其作为源代码(即通过fs)拉入并使用jsdom.env(即jsdom.env({html:,src:[jquery],done:function(erros,window){//here init my test case then done();}});谢谢@JoWie,根据jquery的要求去掉了global.window参数,它就工作了。