node.js - 无法使用 Bit-bucket 的管道将 Puppeteer 和 Chromium 安装到 AWS Elastic Beanstalk
问题描述
我使用 Bitbucket 的管道将 Node.js express 部署到 AWS Elastic beanstalk。
该代码包括安装Puppeteerv5.0.0
,它在安装时会下载 Chromium。
下载 Chromium 时由于访问权限导致部署失败,见下图: ERROR: Failed to download Chromium r756035! 设置“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”环境变量以跳过下载。错误:EACCES:权限被拒绝,mkdir '/tmp/deployment/application/node_modules/puppeteer/.local-chromium'
如何设置权限以使安装成功完成?
解决方案
GitHub 存储库维护@https ://github.com/amarinediary/Marionette。以下内容可能不是最新的。有关维护版本,请参阅 GitHub 链接。
您可以将 AWS Elastic Beanstalk 配置文件 ( .ebextensions
) 添加到 Web 应用程序的源代码中,以配置您的环境并自定义其中包含的 AWS 资源。
在我们的例子中,如果我们不启用EPEL,并且如果我们继续安装 Chromium 作为 npm install 的一部分,Puppeteer 将无法启动 Chromium,因为libatk-1.0.so.0
.
修补程序
将以下内容添加到您的应用根目录:
- 创建一个
.npmrc
文件。 - 将以下内容添加到您的
.npmrc
文件中:
unsafe-perm=true
该.npmrc
文件定义了运行命令时 npm 的行为方式。设置unsafe-perm
以true
在运行包脚本时抑制 UID/GID 切换。设置 unsafe-perm 标志以使用 root 权限运行脚本。
- 来源@不安全烫发
- 创建一个
.ebextensions
文件夹。 - 在
.ebextensions
文件夹中,创建一个01_enableEPEL.config
文件并添加以下内容。
commands:
01_enableEPEL:
command: sudo amazon-linux-extras install epel -y
- 在
.ebextensions
文件夹中,创建一个02_installEPELPackages.config
文件并添加以下内容
packages:
yum:
chromium: []
推荐阅读
- javascript - 我在使用 React 制作的项目中遇到了一个未定义的错误
- coq - Coq 定理证明:peano 算术中的简单分数律
- c# - ASP.NET Core 3.0 配置控制器以返回 pascal case 对象
- vue.js - apollo 客户端,在不破坏使用 jwt 的 http 链接的同时添加订阅
- github - 我可以在私有 git 存储库中授予不同的权限吗?
- if-statement - 否则如果在第一次迭代时停止 [Arduino]
- removing-whitespace - 删除除制表符和换行符以外的所有空格
- javascript - 如何使用 CSS 动态重新定位画布元素
- javascript - Webpack 无法编译 sass - 模块解析失败:意外字符 '@' (1:0)
- android - (Android) onNavigationItemSelected 方法未被调用