1

我已经托管了一个使用实例的NodeJS后端。它过去和现在仍然可以很好地使用旧代码,但是现在如果我想通过部署新代码来更新应用程序,它会给我以下错误:BeanstalkEC2

> phantomjs-prebuilt@2.1.16 install /tmp/deployment/application/node_modules/phantomjs-prebuilt
  > node install.js
  
  Considering PhantomJS found at /usr/local/bin/phantomjs
  Found PhantomJS at /usr/local/bin/phantomjs ...verifying
  Writing location.js file
  Error checking path, continuing Error: EACCES: permission denied, open '/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/location.js'
      at Object.openSync (fs.js:462:3)
      at Object.writeFileSync (fs.js:1362:35)
      at writeLocationFile (/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/util.js:84:6)
      at Promise._successFn (/tmp/deployment/application/node_modules/phantomjs-prebuilt/install.js:375:11)
      at nextTickCallback (/tmp/deployment/application/node_modules/kew/kew.js:47:28)
      at processTicksAndRejections (internal/process/task_queues.js:79:11) {
    errno: -13,
    syscall: 'open',
    code: 'EACCES',
    path: '/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/location.js'
  }
  Download already available at /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
  Verified checksum of previously downloaded file
  Extracting tar contents (via spawned process)
  Removing /tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/phantom
  Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1606204791845/phantomjs-2.1.1-linux-x86_64 -> /tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/phantom
  Phantom installation failed [Error: EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1606204791845/phantomjs-2.1.1-linux-x86_64' -> '/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/phantom'] {
    errno: -13,
    code: 'EACCES',
    syscall: 'link',
    path: '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1606204791845/phantomjs-2.1.1-linux-x86_64',
    dest: '/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/phantom'
  } Error: EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1606204791845/phantomjs-2.1.1-linux-x86_64' -> '/tmp/deployment/application/node_modules/phantomjs-prebuilt/lib/phantom'

我已经被这种情况困住了 20 天,我已经尝试了来自网络的各种解决方案,但到目前为止都没有奏效。我什至不知道为什么PhantomJS我的代码中有,可能是因为我添加了任何 3rd 方包。

我尝试过的解决方案:

  1. 尝试PhantomJS从我的项目安装/卸载,然后上传。

  2. EC2尝试通过访问和使用命令将其安装在Linux 机器上Putty(使用的支持链接 -此处):

    sudo npm install phantomjs -g //Didn't work
    
    sudo npm install phantomjs@2.1.1 -g --unsafe-perm //Didn't work
    sudo npm install phantomjs-prebuilt@2.1.16 -g --unsafe-perm
    
    //Installing globally using NPM support docs
    mkdir ~/.npm-global
    npm config set prefix '~/.npm-global'
    export PATH=~/.npm-global/bin:$PATH
    source ~/.profile
    npm install -g phantomjs
    npm install -g phantomjs-prebuilt
    NPM_CONFIG_PREFIX=~/.npm-global //also tried this
    
  3. 从官方 github repo issue #722尝试了这个解决方案

    cd /usr/local/share
    sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
    sudo tar xjf phantomjs-2.1.1-linux-x86_64.tar.bz2
    sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs
    sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
    sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin/phantomjs
    

我也尝试了许多随机解决方案,但到目前为止没有任何效果。没有keypair与我的EC2实例相关联,因此访问它是一个单独的混乱。另外,是的,我是后端开发的新手。

所以,我的问题是如何解决这个PhantomJS问题?

4

1 回答 1

0

现在有点老了,希望OP设法对其进行排序!因为我花了几天时间试图自己解决这个问题,所以我想我会在这里放一些我为解决这个问题所做的事情的信息,这些信息来自各种来源,供以后出现的任何人使用!

使用您的 AWS 身份密钥(在您的主目录,~/.ssh 中找到)和应用程序的 dns,AWS 分配的应用程序的部署名称,SSH 到您的 eb 环境,例如:

ssh -i <key>.pem <app name>-env.<chars>.<region>.elasticbeanstalk.com 

一旦你进入:

>cd /var/app/current directory.

创建空文件

>touch .npmrc
>sudo vi .npmrc

放入unsafe-perm=true其中并退出 vi(按<esc>并键入:wq)。这将允许 npm 启动的 gyp 进程实际执行某些操作。

>sudo npm install phantomjs-prebuilt
...
>sudo yum install fontconfig

您需要一种方法在构建过程中将所有这些形式化和可重现,这样您就无需在每次应用更新时都登录!

资料来源:

https://forums.aws.amazon.com/thread.jspa?threadID=290964

加载共享库时出错:cent os 上的 libfontconfig.so.1

于 2022-02-02T16:59:02.957 回答