【发布时间】:2020-04-28 12:32:54
【问题描述】:
几天前,我们收到了有关“Lambda 操作通知”的通知,将我们的 Node.js 8.10 运行时更新为 Node.js 10.x 运行时。
为响应此通知,我们在开发系统中安装了 Node.js 版本 v10.16.3 并测试了我们现有的代码。 我们发现代码在我们的开发系统中运行良好,但是当我们在 AWS Lambda 中使用 Node.js 10.x 运行时测试相同的代码时,我们收到以下错误:
2019-10-28T12:03:31.771Z 8e2472b4-a838-4ede-bc70-a53aa41d9b79 信息错误:服务器提前终止,状态为 127 在 earlyTermination.catch.e (/var/task/node_modules/selenium-webdriver/remote/index.js:251:52) 在 process._tickCallback (internal/process/next_tick.js:68:7)
“aws-sdk”、“selenium-webdriver”npm 包和 google chrome 二进制文件是我们项目中使用的唯一依赖项。
我们的项目具有以下文件结构。
/var/task/
├── index.js
├── lib
│ ├── chrome
│ ├── chromedriver
│ ├── libgconf-2.so.4
│ ├── libORBit-2.so.0
│ └── libosmesa.so
└── node_modules
├── selenium-webdriver
├── ...
由于这段代码在我们的开发系统中没有抛出任何错误,我们怀疑它与新的运行时有关。
我们尝试使用 setChromeBinaryPath() 设置二进制路径
这是我们正在使用的代码。调用 build() 方法时发生错误。
var webdriver = require('selenium-webdriver');
var chrome = require('selenium-webdriver/chrome');
var builder = new webdriver.Builder().forBrowser('chrome');
var chromeOptions = new chrome.Options();
const defaultChromeFlags = [
'--headless',
'--disable-gpu',
'--window-size=1280x1696', // Letter size
'--no-sandbox',
'--user-data-dir=/tmp/user-data',
'--hide-scrollbars',
'--enable-logging',
'--log-level=0',
'--v=99',
'--single-process',
'--data-path=/tmp/data-path',
'--ignore-certificate-errors',
'--homedir=/tmp',
'--disk-cache-dir=/tmp/cache-dir'
];
chromeOptions.setChromeBinaryPath("/var/task/lib/chrome");
chromeOptions.addArguments(defaultChromeFlags);
builder.setChromeOptions(chromeOptions);
var driver = await builder.build();
【问题讨论】:
标签: node.js selenium-webdriver aws-lambda selenium-chromedriver