问题描述
我正在尝试使用fetch()GET请求与datamuse API进行交互,并将其显示在DOM上。 但是当我运行节点index.js时,出现此错误:ReferenceError:文档未定义。
const submitButton = document.querySelector('#submit');
我用Google搜索了它,并知道nodejs不像浏览器那样理解DOM。
我尝试修复它:
无法计算,请帮助
解决方法
Node.js是与浏览器完全不同的Javascript环境。它具有与浏览器不同的可用功能库。例如,浏览器具有解析HTML并显示DOM API的能力,并且具有window
对象。 Node.js根本不是浏览器,因此没有这些功能。取而代之的是,它具有TCP和HTTP网络连接,文件系统访问等功能,这些功能通常是在服务器实现中使用的。
如果要从node.js尝试从其他服务器获取网页,然后解析该HTML,然后理解或操纵该网页中的DOM元素,则需要一个库来执行此操作。 cheerio和puppeteer之类的库是执行此操作的流行工具。 Cheerio,解析HTML,但是不运行页面中的Javascript,然后提供类似于jQuery的API来访问DOM。 Puppeteer实际上运行Chrome浏览器引擎来解析页面,并在页面中运行Javascript,从而为您提供完全具有代表性的DOM,甚至可以执行诸如对实际呈现的页面进行截图的操作。