javascript - jsdom.env 不适用于 node.js C9

标签 javascript node.js jsdom

所以我最近一直在 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 本身,但仍然遇到这个问题。有谁知道怎么回事?

最佳答案

我遇到了同样的问题。一直在网上寻找解决方案。原来 jsdom 从 v10 开始更新了他们的一些特性。所以,我想在 Express 应用程序的 Node.js 端使用 jQuery。 对于那些只是在寻找有关如何在 Node 中包含 jQuery 的答案的人,我想提一下,您需要使用 npm install jsdom 安装 jsdom jQuery 使用 npm install jquery。然后:

要使 jQueryNode 中工作,需要一个带有文档的窗口。由于 Node 中 native 不存在这样的窗口,因此可以通过 jsdom 模拟如下:

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

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

.env() 自 v10 起已弃用。希望这对您或遇到此类问题的任何人有所帮助。

关于javascript - jsdom.env 不适用于 node.js C9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45068932/

相关文章:

javascript - 使用nodejs执行shell脚本命令

javascript - Jest spy 在 'require' 模拟模块时工作,在 'import' 时不工作

javascript - gulp userref 从管道中删除文件

node.js - 找不到模块 'forwarded'

javascript - 在 forEach 上通过引用传递

node.js - jsdom - document.querySelector 已启用,但文档中缺少

javascript - 从长度为 6 的数组中返回 3 个组合的所有组合且该数字不与同一组数字出现的算法

javascript - 数据表: brake with url

javascript - 使用 Express 的 Nuxt 应用程序不允许在应用程序外部访问 POST 路由

jquery - jsdom和jquery修改dom元素的css样式