jsdom.env没有在node.js C9上工作

问题描述 投票:4回答:2

所以我最近在C9上使用Node.js并在javascript文件中遇到了这个问题:

jsdom.env("", function(err, window) {
TypeError: jsdom.env is not a function

这是我的代码:

var jsdom = require('jsdom');
var $;
jsdom.env("", function(err, window) {
console.log("what");
if (err) {
    console.error(err);
    return;
}

$ = require("jquery")(window);

$.ajax(settings).done(function (response) {
     console.log(response);
  });
});

我更新了所有依赖项以及Node本身,但仍然遇到了这个问题。有谁知道怎么了?

javascript node.js jsdom
2个回答
14
投票

我面临同样的问题。正在寻找整个网络的解决方案。事实证明,自从v10以来,jsdom已经更新了一些功能。所以,我想在快速应用程序的Node.js端使用jQuery,并且必须如下所示:

var jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;

var $ = jQuery = require('jquery')(window);

自v10起,.env()已弃用。希望这可以帮助您或任何一直面临这些类型问题的人。


1
投票

第1步:npm安装jquery

第2步:npm安装jsdom

<!-- language: lang-js -->
    //add dummy function to test jquery in Node
    function fn1( value ){ console.log( "fn1 says " + value );}  
function fn2( value ) {console.log( "fn2 says " + value ); return false;}
    var jsdom = require('jsdom');
    const { JSDOM } = jsdom;
    const { window } = new JSDOM();
    const { document } = (new JSDOM('')).window;
    //comment out the line below it create problem
    //global.document = document;
    var $ = jQuery = require('jquery')(window);
    var callbacks = $.Callbacks();
    callbacks.add(fn1);
    callbacks.fire("foo!");
    callbacks.add( fn2 ); 
    callbacks.fire( "fool!" );
© www.soinside.com 2019 - 2024. All rights reserved.