【问题标题】:How to access window or document object in nodejs /es2017如何在 nodejs /es2017 中访问窗口或文档对象
【发布时间】:2019-10-05 10:04:33
【问题描述】:

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

(node:3024) UnhandledPromiseRejectionWarning: UnhandledPromiseRejectionWarning: 未处理的承诺拒绝 (rejection id: 1): ReferenceError: document is not defined

注意:请注意,我不想使用 jquery,因为它会减小我的包大小。

节点中 jquery 的任何其他替换也可以使用较小的尺寸

【问题讨论】:

    标签: node.js typescript dom ecmascript-2017


    【解决方案1】:

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

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

    例子,

    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”。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 2016-12-02
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 2010-10-27
      • 2018-06-09
      • 1970-01-01
      • 2016-01-23
      相关资源
      最近更新 更多