问题描述
我正在尝试使用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:
- 这是我的
manifest.yml
文件,其中定义了buildpack和其他参数。
applications:
- name: puppeteer-test
buildpack: https://github.com/cloudfoundry/nodejs-buildpack
command: npm start
disk_quota: 1024MB
memory: 128MB
instances: 1
- 此外,我已经在本地运行
npm install
,以创建node_modules。cf push
将选择node_modules文件夹。 确保您对文件夹拥有正确的权限 - 我运行了
ibmcloud cf push
而不是cf push
。
方法2
- 请勿在{{1}}中定义任何内容。让Cloud Foundry根据文件决定构建包。
manifest.yml
- 然后运行
applications:
- name: puppeteer-test
有第三种方法,您可以在ibmcloud cf push
文件中定义从依赖项到构建包的所有内容。您可以按照post here
注意:正如Henrik提到的那样,访问.yml
URL时您看不到任何内容,因为node.js应用程序没有附加前端。