1

我在使用 html-pdf 在 Elastic Beanstalk 上安装 phantomjs-prebuilt 时遇到了严重且间歇性的问题。我已经尝试了所有我能找到的解决方案,但我并不精通如何解决这些问题。我什至不知道如何通过 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 时设法在本地安装 phantoms-prebuilt 并且 html-pdf lib 已经工作了好几年,但后来它又开始回来了,而我没有更改 package.json。

非常感谢任何帮助!让我知道您需要查看哪些代码!

编辑:我刚刚在实例中设置了 CLI 和 SSH。在那里我运行了命令:

sudo npm install -g phantomjs@2.1.1 --unsafe-perm

接着

sudo npm install -g phantomjs-prebuilt --unsafe-perm

但是当我重新启动应用程序时,我仍然收到完全相同的错误消息。

4

1 回答 1

1

对于在 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提供了一个对我有用的解决方案。

于 2019-10-24T13:25:16.247 回答