Получите пустую веб-страницу при запуске Chromeless на AWS Lambda

Я хочу использовать пакет Node.js Chromeless в функции AWS Lambda. Я использую два пакета: chromless и serverless-chrome. На моем локальном компьютере мой тестовый сценарий работает нормально. Когда я развертываю его в Lambda, я получаю пустой результат для .html (). Результат - не пустая строка, это пустая страница. (‹Html> ‹head> ‹/head> ‹body> ‹/body> ‹/html>) В журналах CloudWatch нет ошибок. Кажется, что 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

person Schmidko    schedule 05.04.2018    source источник


Ответы (1)


Эта проблема задокументирована и довольно хорошо освещена в разделе «Проблемы без Chrome» [https://github.com/graphcool/chromeless/issues/414].

Есть проблема в бессерверных зависимостях, которая вызывает проблемы.

Чтобы исправить это, обновите ваш serverless / package.json, чтобы привязать "serverless-plugin-chrome" к версии "1.0.0-38".

Например, мои зависимости разработчиков выглядят так:

    "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"
  }
person George Haskell    schedule 07.04.2018
comment
Спасибо. Это устранило проблему для меня. Изменил версию с 1.0.0-41 на 1.0.0-38, и теперь она работает. - person Schmidko; 09.04.2018