我在使用html-pdf将phantomjs-prebuilt安装在Elastic Beanstalk上时遇到严重而间歇的问题。我已经尝试了所有可以找到的解决方案,但是我对如何解决这些问题并不精通。我什至无法弄清楚如何通过SSH进入实例,因此请像对待新手一样对待我。我当前遇到的错误是:
> node server.js
html-pdf: Failed to load PhantomJS module. { Error: Cannot find module 'phantomjs-prebuilt'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/var/app/current/node_modules/html-pdf/lib/pdf.js:7:19)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3) code: 'MODULE_NOT_FOUND' }
Server is running.
我在ebextensions中尝试了不同的安装脚本,增加了实例(t2.micro-t2.small-t2.medium),一个名为.npmrc的文件以及许多其他内容。
如何永久解决此问题?
[我可以在运行npm install和html-pdf lib的时候就设法在本地安装phantoms-prebuild,但是已经运行了好几年,但是后来又重新出现了,而无需更改package.json。
任何帮助,不胜感激!让我知道您需要查看什么代码!
编辑:我刚刚在实例中设置了CLI和SSH。在那里,我运行了命令:
sudo npm install -g [email protected] --unsafe-perm
然后
sudo npm install -g phantomjs-prebuilt --unsafe-perm
但是重新启动应用程序时,我仍然收到完全相同的错误消息。
对于在Elastic Beanstalk上使用PhantomJS遇到严重麻烦的人,最终解决我的问题的是安装AWS CLI,并通过设置EB的步骤来进行:
eb ssh [ENV] [REGION] - Don't worry, the CLI will guide you
并且在使用具有ElasticBeanstalkFullAccess(和控制台密码)的用户在线配置IAM之后,然后在以下位置使用aws cli的配置文件:
~/.aws/config and credentials with the keys and secrets from IAM
最后使用eb ssh连接到环境,然后运行:
sudo npm install -g phantomjs-prebuilt --unsafe-perm
sudo npm install html-pdf -g (will give deprecated warning)
sudo npm link html-pdf
sudo npm link phantomjs-prebuilt
最后,通过仪表板重新启动应用服务器并检查日志(最后100行)-应该只是:
> node server.js
Server is running.
或类似。祝你好运。
感谢Paul-JO为我工作的解决方案。