AWSlambda中向jsdom加载外部资源的解决方法是什么?
创始人
2024-09-26 11:31:32
0

在AWS Lambda中使用jsdom加载外部资源需要使用一些特殊的技巧。下面是一种可行的方法:

  1. 首先,使用npm安装所需的jsdom和request库:
npm install jsdom request
  1. 在Lambda函数中引入这些库:
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
const request = require('request');
  1. 接下来,创建一个Promise,以便等待加载完成后继续处理:
const loadUrl = (url) => {
  return new Promise((resolve, reject) => {
    request(url, (err, res, body) => {
      if (err) {
        reject(err);
      } else {
        resolve(body);
      }
    });
  });
}
  1. 然后,使用JSDOM创建一个虚拟window对象,并将外部资源添加到其中:
exports.handler = async (event, context, callback) => {
  const url = 'https://example.com';
  const html = await loadUrl(url);
  const dom = new JSDOM(html, {
    resources: 'usable',
    runScripts: 'dangerously',
    pretendToBeVisual: true,
    beforeParse(window) {
      const script = window.document.createElement('script');
      script.type = 'text/javascript';
      script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js';
      window.document.head.appendChild(script);
    },
    onload: function() {
      console.log('Finished loading external resources');
    }
  });
  
  // Do something with the loaded DOM here
  
  callback(null, 'Done');
}

在这种情况下,我们将jQuery添加到了虚拟的window对象中,以便后续操作可以使用它来操作DOM。通过设置'beforeParse”选项,我们可以在构建DOM之前向文档中添加脚本。

当jsdom加载完成外部资源时,它将触发'onload”回调。在这个例子中,我们只是简单地输出一条日志信息。

完成后,你可以在'Do something with the loaded DOM here”块中添加任何需要处理的代码。在代码执行完成后,使用'callback”函数结束Lambda函数。

相关内容

热门资讯

截至目前!茶馆游戏辅助,微乐小... 截至目前!茶馆游戏辅助,微乐小程序脚本,攻略教程(有挂辅助)-哔哩哔哩微乐小程序脚本脚本下载中分为三...
透视讲解!德普之星辅助工具如何... 透视讲解!德普之星辅助工具如何设置,如何下载德普之星辅助软件(透视)真是存在有挂(有挂解惑)-哔哩哔...
透视系统!德扑圈透视挂,德普之... 您好,德普之星透视辅助软件这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很...
此事备受玩家关注!鄱阳翻精辅助... 此事备受玩家关注!鄱阳翻精辅助下载,WePOker有没有透视方法,妙计教程(详细教程)-哔哩哔哩1、...
透视了解!德普之星辅助器,德普... 透视了解!德普之星辅助器,德普之星透视软件免费入口官网(透视)好像存在有挂(有挂透视)-哔哩哔哩1、...
最新消息!雀神广东麻将辅助工具... 最新消息!雀神广东麻将辅助工具,雀友会广东潮汕辅助脚本,窍门教程(有挂技术)-哔哩哔哩1)雀友会广东...
透视模拟器!德普辅助器怎么用,... 透视模拟器!德普辅助器怎么用,德普辅助软件(透视)本来真的有挂(有挂细节)-哔哩哔哩德普辅助器怎么用...
此事引发网友热议!约局吧辅助,... 此事引发网友热议!约局吧辅助,新卡农挂,方式教程(有挂神器)-哔哩哔哩1、完成约局吧辅助辅助器v3....
透视游戏!德普之星透视辅助插件... 透视游戏!德普之星透视辅助插件,德普之星辅助工具如何打开(透视)一直是有挂(有挂存在)-哔哩哔哩1、...
截至目前!来趣广西辅助,hhp... 截至目前!来趣广西辅助,hhpoker到底可以辅助码,项目教程(有挂实锤)-哔哩哔哩1、hhpoke...