You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node环境下如何正确引入jQuery与JSDOM并解决相关报错?

解决jsdom require(...).env is not a function 错误并正确配置jQuery + jsdom

嘿,我来帮你搞定这个问题~你遇到的require(...).env is not a function报错,核心原因是你安装的是新版本的jsdom,而env()方法早在jsdom v10版本就被废弃移除了,旧的API自然用不了啦!

下面给你两种正确的配置方案,看你的需求选就行:

方案一:在Node环境中单独模拟DOM使用jQuery

如果只是想在Node环境里模拟浏览器DOM环境,用jQuery做一些DOM操作,直接替换你原来的jsdom+jQuery相关代码为下面的内容:

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true , height: 900});

// 引入jsdom的JSDOM类
const { JSDOM } = require("jsdom");
// 创建一个空的DOM环境
const domInstance = new JSDOM('');
// 获取模拟的window对象
const window = domInstance.window;
// 把window传入jQuery,初始化$变量
var $ = require("jquery")(window);

// 测试一下,比如创建一个div并输出文本
console.log($('<div>Hello jQuery!</div>').text()); // 会输出 Hello jQuery!

方案二:在Nightmare中直接注入jQuery(更实用的爬虫场景)

如果你是想结合Nightmare做页面爬取/自动化,需要在Nightmare控制的浏览器里用jQuery解析页面,其实完全不需要在Node环境单独配置jsdom——Nightmare可以直接把jQuery注入到目标页面里,这样用起来更顺手:

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true , height: 900});

nightmare
  .goto('https://example.com') // 先访问你要操作的页面
  // 把本地安装的jQuery注入到当前页面
  .inject('js', require.resolve('jquery'))
  // 在页面的浏览器环境中执行jQuery代码
  .evaluate(() => {
    // 这里的$就是页面里的jQuery,和浏览器里用的完全一样
    return $('h1').text(); // 比如获取页面中h1标签的文本内容
  })
  .then(result => {
    console.log('页面标题文本:', result);
  })
  .catch(error => {
    console.error('操作出错:', error);
  });

简单总结下:旧的jsdom.env()已经被淘汰了,新版本必须用JSDOM类来创建DOM环境;如果是和Nightmare配合使用,直接注入jQuery到页面是更优的方案哦~

内容的提问来源于stack exchange,提问作者pohzurrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:37:10