AWS Elastic BeanStalk Phantom Bug



我在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位亚马逊Linux/4.14.1和节点10.17

我刚刚设法在我的环境中找到了一个类似问题的解决方案。运行节点10.15。也许你已经解决了这个问题——如果是的话,恭喜你!完整的免责声明,我不是弹性豆茎配置的专家,但我想分享一个潜在的解决方案。

尝试在/.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权限运行脚本。

通过使用本期中的最后一条注释得到了提示,这导致了"拒绝权限错误"——因此是不安全的perm。

作为参考,我还有下面的Elasticbeanstall设置,这些设置显然不足以npm安装所有东西…:

/.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 

.npmrcpackage.json在同一目录中

# Force npm to run node-gyp also as root, preventing permission denied errors in AWS with npm
unsafe-perm=true

相关内容

  • 没有找到相关文章

最新更新