【问题标题】:ReferenceError: document is not defined , nodejs does not understand DOMReferenceError: document is not defined , nodejs 不理解 DOM
【发布时间】:2020-12-09 08:17:11
【问题描述】:

我正在尝试使用 fetch()GET 请求与 datamuse API 交互并将其显示到 DOM。 但是当我运行 node index.js 时,我得到了这个错误:ReferenceError: document is not defined.

const submitButton = document.querySelector('#submit');

我用谷歌搜索了一下,发现 nodejs 不像浏览器那样理解 DOM。

我尝试修复它:

  1. 使用 ESLint,设置:env {browser: true}
  2. 安装 JSdom 包,然后得到错误 jsdom not defined

想不通,请帮忙

【问题讨论】:

  • Node.JS doesn't 理解 DOM,因为没有。

标签: javascript node.js dom eslint


【解决方案1】:

Node.js 是与浏览器完全不同的 Javascript 环境。它具有与浏览器不同的可用函数库。例如,浏览器具有解析 HTML 和呈现 DOM API 的能力,并且它具有 window 对象。 Node.js 根本不是浏览器,所以它没有这些功能。相反,它具有 TCP 和 HTTP 网络、文件系统访问等......您通常在服务器实现中使用的东西。

如果您尝试从 node.js 获取网页,然后解析该 HTML,然后理解或操作该网页中的 DOM 元素,则需要一个库来执行此操作。诸如 cheeriopuppeteer 之类的库是执行此操作的流行工具。 Cheerio,解析 HTML,但不在页面中运行 Javascript,然后提供类似 jQuery 的 API 来访问 DOM。 Puppeteer 实际上运行 chromium 浏览器引擎来解析页面并在页面中运行 Javascript,从而为您提供完全具有代表性的 DOM,甚至可以执行诸如截取实际渲染页面的屏幕截图等操作。

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    相关资源
    最近更新 更多