在AWS Lambda上运行Chromeless时获取空网页

时间:2018-04-05 20:55:49

标签: node.js aws-lambda chromeless

我想在AWS Lambda函数上使用Node.js包Chromeless。 我使用两个包:chromless和serverless-chrome 在我的本地机器上,我的测试脚本运行良好。当我将它部署到Lambda时,我得到一个空的结果.html() 结果是没有空字符串它是一个空页面。 (小于HTML>< HEAD>< /头><身体GT;< /体>< / HTML&GT) CloudWatch Logs中没有错误。 看起来Chrome运行正常,但无法加载网站。 NodeJS版本是8.10,async / await似乎可以工作。 希望有人有个主意。

代码:

const launchChrome = require('@serverless-chrome/lambda');
const { Chromeless } = require('chromeless');

let index = async function handler () {

    await launchChrome({
        port: 9222,
        chromeFlags: [
            '--window-size=1200,800',
            '--disable-gpu',
            '--headless'
        ]
    })
    .then(async (chrome) =>
    {

        const chromeless = new Chromeless(
            {
                launchChrome:false,
                cdp:{host: 'localhost', port: 9222, secure: false}
            }
        );

        const html = await chromeless
            .goto('http://www.google.com')
            .wait(5000)
            .html();
        console.log(html);
        chromeless.end();

    })
};

exports.handler = index;

日志:

16:39:44 START RequestId: xxx Version: $LATEST
16:39:52 2018-04-05T16:39:52.163Z xxx   <html><head></head><body></body></html>
16:39:52 END RequestId: xxx
16:39:52 REPORT RequestId: xxx
Duration: 7375.83 ms    Billed Duration: 7400 ms Memory Size: 576 MB

1 个答案:

答案 0 :(得分:2)

在Chromeless问题[https://github.com/graphcool/chromeless/issues/414]中已经详细记录了这个问题。

无服务器的依赖项中存在导致问题的问题。

要更正它,请将您的无服务器/ package.json更新为peg&#34; serverless-plugin-chrome&#34;到版本&#34; 1.0.0-38&#34;。

例如,我的dev依赖项如下所示:

    "devDependencies": {
    "@types/cuid": "^1.3.0",
    "@types/node": "^9.6.2",
    "serverless": "^1.19.0",
    "serverless-offline": "^3.15.3",
    "serverless-plugin-chrome": "1.0.0-38",
    "serverless-plugin-typescript": "^1.0.0"
  }