我使用 Bitbucket 的管道将 Node.js Express 部署到 AWS Elastic beanstalk。
该代码包括安装木偶v5.0.0
安装时下载铬。
由于下载 Chromium 时的访问权限,部署失败,请参阅下文: 错误:无法下载铬 r756035!设置"PUPPETEER_SKIP_CHROMIUM_DOWNLOAD"env 变量以跳过下载。 错误: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 安装的一部分, Puppeteer 由于不可用而无法启动 Chromiumlibatk-1.0.so.0
.
- Source @ Run Puppeteer on AWS EC2 執行 Amazon-Linux 的 AWS EC2 執行 個體
Hotfix
将以下内容添加到您的应用程序根目录:
- 创建一个
.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: []
只需在nodeAPP 的根目录中添加 .npmrc 文件,其中包含以下内容:
unsafe-perm=true
这将强制 NPM 尝试始终在运行脚本的上下文中运行。因此,您不会被"权限被拒绝"阻止