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函数。

相关内容

热门资讯

揭幕一下!雀神广东麻雀智能科技... 您好,雀神广东麻雀智能科技贴吧这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302...
关于一下!微玩体育辅助器,拱趴... 关于一下!微玩体育辅助器,拱趴大菠萝有辅助吗,竟然真的是有挂(哔哩哔哩)1、点击下载安装,拱趴大菠萝...
必备一下!西兵互娱辅助插件ap... 必备一下!西兵互娱辅助插件app,心悦手游辅助,其实是有挂(哔哩哔哩)1、游戏颠覆性的策略玩法,独创...
关于一下!卡农大厅辅助,天蝎大... 关于一下!卡农大厅辅助,天蝎大厅辅助,果然有挂(哔哩哔哩);1、完成卡农大厅辅助辅助器v3.3的残局...
教你一下!欢乐达人暗堡辅助,皮... 教你一下!欢乐达人暗堡辅助,皮皮衡阳字牌黑科技视频,一直是真的有挂(哔哩哔哩)1、下载好皮皮衡阳字牌...
曝光一下!大唐麻将开挂软件,好... 曝光一下!大唐麻将开挂软件,好友赣南能装挂吗,一贯真的是有挂(哔哩哔哩)1、游戏颠覆性的策略玩法,独...
专业一下!决战卡五星辅助器下载... 专业一下!决战卡五星辅助器下载,哈糖大菠萝辅助,好像真的是有挂(哔哩哔哩)1、进入游戏-大厅左侧-新...
必备一下!火神大厅科技,爱来大... 必备一下!火神大厅科技,爱来大菠萝免费辅助器,竟然是真的有挂(哔哩哔哩)所有人都在同一条线上,像星星...
教你一下!途游辅助器软件,蛮王... 教你一下!途游辅助器软件,蛮王大厅辅助教程,真是真的是有挂(哔哩哔哩);1、游戏颠覆性的策略玩法,独...
详情一下!悟空大厅辅助器,玖游... 详情一下!悟空大厅辅助器,玖游卡五星辅助,原来存在有挂(哔哩哔哩)1、这是跨平台的悟空大厅辅助器轻量...