如何在Node.js / ES2017中访问窗口或文档对象

时间:2019-05-18 08:12:31

标签: node.js typescript dom es2017

我正在尝试在我的打字稿应用程序中访问document.getElementbyID和document.location。但是出错了。

(节点:3024)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):ReferenceError:未定义文档

注意:请注意,我不想使用jquery来减小我的捆绑包大小。

以较小的大小替换节点中的jquery也可以接受

1 个答案:

答案 0 :(得分:0)

实际上,nodejs代码不在浏览器上运行。它的服务器端脚本语言,因此没有窗口或文档对象。如果仍然要使用document.getElementbyID。您可以使用“木偶”。

Puppeteer是一个Node库,它提供了高级API来通过DevTools协议控制无头Chrome或Chromium。也可以将其配置为使用完整的(无头)Chrome或Chromiu

示例

  1. npm install puppeteer
  2. 添加了以下代码,
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”。