node.js - 如何在 nodejs /es2017 中访问窗口或文档对象
问题描述
我正在尝试在我的打字稿应用程序中访问 document.getElementbyID 和 document.location。但是出现错误。
(节点:3024)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):ReferenceError:文档未定义
注意:请注意,我不想使用 jquery 以减少我的包大小。
节点中 jquery 的任何其他替换也是可以接受的,但尺寸较小
解决方案
实际上,nodejs 代码不在浏览器上运行。它的服务器端脚本语言因此没有窗口或文档对象。如果您仍想使用 document.getElementbyID。你可以使用“傀儡师”。
Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制无头 Chrome 或 Chromium。它还可以配置为使用完整的(非无头)Chrome 或 Chromiu
例子,
npm install puppeteer
- 添加了下面的代码,
const puppeteer = require('puppeteer');
function async xyz() {
const browserData = await puppeteer.launch();
page = await browserData.newPage();
await page.goto('http://example.com/some.html', {waitUntil: 'load'});
const xyzPage = await page.evaluate(() => {
return document.getElementById("xyzid").innerHTML;
});
console.log(xyzPage);
}
注意:还有另一个 npm 包可以提供对 JSDOM 等文档对象的访问。但是很多人都在使用“puppeteer”。
推荐阅读
- python-3.x - 如何在具有日期差异(DATETIME - DATETIME)的值之间进行条件比较?
- microsoft-graph-api - MS Graph,Calendar deltalink 在未删除时将约会显示为已删除
- ios - iOS UICollectionView 动态切换单元格NIB
- excel - 如何使用 VBA 从网站上抓取位置名称
- python-3.x - 通过 odoo v10 迁移到 odoo v13 在 Onchange 函数中出现错误
- python - Read multiple excel files in order from folder with Python
- angular - 从祖父类设置子列表值
- c# - 带有 Xaml.Behaviors.Wpf 的 Caliburn Micro,无法在事件触发器中包含操作消息
- npm - 继承或共享 package.json 依赖项
- r - 从 R 中的下一行赋值