1

我在 AWS Elastic Beanstalk 中进行生产时遇到了一个错误,否则它在本地和 Heroku 中都运行良好。日志说:

html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using 'options.phantomPath'

确实我正在使用html-pdf,但由于某种原因它在 AWS EB 上失败了。EB 是:64 位 Amazon Linux/4.14.1 和节点 10.17

4

1 回答 1

0

我只是设法找出解决我环境中类似问题的方法。运行节点 10.15。也许你已经解决了这个问题——如果是这样,恭喜!完全免责声明,我不是 Elasticbeanstalk 配置方面的专家,但想分享一个潜在的解决方案。

/.ebextension尝试添加一个包含以下内容的 yaml 配置文件:

commands:
    99-installphantom:
        env:
            PATH: /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/opt/elasticbeanstalk/node-install/node-v10.15.1-linux-x64/bin/
        command: npm install -g phantomjs-prebuilt --unsafe-perm

这会强制全局安装 phantomjs,并且该--unsafe-perm标志以 root 权限运行脚本。

通过使用此问题中的最后一条评论得到提示,然后导致“权限被拒绝错误” - 因此是不安全的烫发。

作为参考,我还有以下 Elasticbeanstalk 设置,这显然不足以 npm install everything...:

/.ebextensions/00_change_npm_permissions.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/00_set_tmp_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      chown -R nodejs:nodejs /tmp/.npm 

.npmrc在同一目录中package.json

# Force npm to run node-gyp also as root, preventing permission denied errors in AWS with npm
unsafe-perm=true
于 2020-11-05T02:23:56.447 回答