几天前,我们收到了有关“ Lambda操作通知”的通知,将我们的Node.js 8.10运行时更新为Node.js 10.x运行时。
响应此通知,我们在开发系统中安装了Node.js版本v10.16.3,并测试了现有代码。我们发现代码在我们的开发系统中运行良好,但是当我们在带有Node.js 10.x运行时的AWS Lambda中测试相同的代码时,出现以下错误:
2019-10-28T12:03:31.771Z 8e2472b4-a838-4ede-bc70-a53aa41d9b79 INFO错误:服务器在EarlyTermination.catch.e(/ var / task / node_modules / selenium-webdriver / remote / index。 js:251:52)在process._tickCallback(内部/进程/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
??? ...
Run Code Online (Sandbox Code Playgroud)
由于此代码不会在我们的开发系统中引发任何错误,因此我们怀疑它与新的运行时有关。
我们尝试使用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', // …Run Code Online (Sandbox Code Playgroud)