Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JSDom的JQuery是';给出类型错误的函子_Jquery_Node.js_Mocha.js_Jsdom_Io.js - Fatal编程技术网

通过JSDom的JQuery是';给出类型错误的函子

通过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>&

在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><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参数,它就工作了。