无法将Puppeteer部署到IBM Cloud

问题描述

我正在尝试使用https://github.com/cloudfoundry/nodejs-buildpack buildpack通过CF将Puppeteer部署到IBM Cloud,但是总是出现以下错误:

/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory
(node:131) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!

我的manifest.yml如下:

applications:
- path: .
  domain: eu-gb.cf.appdomain.cloud
  command: npm start
  name: Name
  host: Name
  memory: 128M
  instances: 1
  disk_quota: 1024M
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack

木偶初始化如下:

 const browser = await puppeteer.launch({
    headless: true,defaultViewport: null,args: ['--no-sandbox','--disable-setuid-sandbox'],});

任何想法,如何解决? 谢谢。

解决方法

这对我有用。我刚刚使用npm init命令创建了一个node.js应用,通过npm i puppeteer命令添加了Puppeteer,并向index.js添加了基本的Puppeteer示例,然后遵循两种方法

方法1:

  1. 这是我的manifest.yml文件,其中定义了buildpack和其他参数。
  applications:
    - name: puppeteer-test
      buildpack: https://github.com/cloudfoundry/nodejs-buildpack
      command: npm start
      disk_quota: 1024MB
      memory: 128MB
      instances: 1
  1. 此外,我已经在本地运行npm install,以创建node_modules。 cf push将选择node_modules文件夹。 确保您对文件夹拥有正确的权限
  2. 我运行了ibmcloud cf push而不是cf push

方法2

  1. 请勿在{{1​​}}中定义任何内容。让Cloud Foundry根据文件决定构建包。
manifest.yml
  1. 然后运行
  applications:
    - name: puppeteer-test

有第三种方法,您可以在ibmcloud cf push 文件中定义从依赖项到构建包的所有内容。您可以按照post here

中提到的说明进行操作

注意:正如Henrik提到的那样,访问.yml URL时您看不到任何内容,因为node.js应用程序没有附加前端。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...