ReferenceError:未定义文档,nodejs无法理解DOM

问题描述

我正在尝试使用fetch()GET请求与datamuse API进行交互,并将其显示在DOM上。 但是当我运行节点index.js时,出现此错误:ReferenceError:文档未定义。

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

我用Google搜索了它,并知道nodejs不像浏览器那样理解DOM。

我尝试修复它:

  1. 使用ESLint,设置:env {browser:true}
  2. 安装JSdom软件包,然后得到未定义的jsdom错误

无法计算,请帮助

解决方法

Node.js是与浏览器完全不同的Javascript环境。它具有与浏览器不同的可用功能库。例如,浏览器具有解析HTML并显示DOM API的能力,并且具有window对象。 Node.js根本不是浏览器,因此没有这些功能。取而代之的是,它具有TCP和HTTP网络连接,文件系统访问等功能,这些功能通常是在服务器实现中使用的。

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