Advertisement

Linux下安装html-pdf报“PhantomJS not found on PATH”错误的解决办法

阅读量:

通过 html-pdf 工具将 HTML 文件转换为 PDF 文件;该工具依赖 phantomjs-prebuilt 包装器;phantomjs-prebuilt 用于从 npm 安装 PhantomJS 库;当安装 html-pdf 时,默认会包含此依赖项。

然而,安装html-pdf插件的时候遇到了phantomjs-prebuilt装不上的问题:

复制代码
 [root@localhost PROJECTSERVICE]# npm install html-pdf --save

    
  
    
 > phantomjs-prebuilt@2.1.16 install /pathto/PROJECTSERVICE/node_modules/phantomjs-prebuilt
    
 > node install.js
    
  
    
 PhantomJS not found on PATH
    
 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 /pathto/PROJECTSERVICE/node_modules/phantomjs-prebuilt/lib/phantom
    
 Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1544582492513/phantomjs-2.1.1-linux-x86_64 -> /pathto/PROJECTSERVICE/node_modules/phantomjs-prebuilt/lib/phantom
    
 chmod failed: phantomjs was not successfully copied to /pathto/PROJECTSERVICE/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
    
 npm ERR! code ELIFECYCLE
    
 npm ERR! errno 1
    
 npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js`
    
 npm ERR! Exit status 1
    
 npm ERR!
    
 npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script.
    
 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
  
    
 npm ERR! A complete log of this run can be found in:
    
 npm ERR!     /root/.npm/_logs/2018-12-12T02_41_36_373Z-debug.log

在尝试安装phantomjs-prebuilt时出现错误信息,在项目根目录中运行命令npm install phantomjs-prebuilt --save后仍然遇到相同问题。接着往下阅读相关内容。

PhantomJS未被PATH环境变量识别

注意到某个地方出现红色标记后提示无法完成复制操作后,在临时目录下的一个子目录中发现了 phantomjs 软件包及其压缩版本,并试图按照其内部路径进行复制操作;然而由于之前尝试安装时未成功,在 node_modules 目录中找不到预构建好的 phantomjs 软件包

尝试过程

一、

第一步:在git下面找phantomjs-prebuilt,看到了两种安装方式:

由于第一种方案不可行,则考虑第二种方法。首先下载zip文件并解压它;接着将解压好的zip文件复制到node_modules目录中,并将其重命名为phantomjs-prebuilt。

第二步:通过cd命令切换到phantomjs-prebuilt目录;运行node命令并执行install.js文件;遇到错误提示显示缺少必要的模块依赖项,请安装完成后即可继续进行下一步操作;随后调用html-pdf相关的代码;发现可以直接使用该功能。

二、

通过百度了解到一个方法:使用命令npm install phantomjs-prebuilt@version --ignore-scripts即可完成安装。参考上述信息得知版本号为2.1.16,请随后进行如下操作:npm install phantomjs-prebuilt@2.1.16 --ignore-scripts。此次操作未产生任何错误信息。

第二步:同上第二步。

三、

第一步:同上第一步。

在项目根目录中执行mv tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1544582492513/phantomjs-2.1.1-linux-x86_64/bin/phantomjs命令操作即可完成文件移动任务。
随后,在node_modules目录下的phantomjs-prebuilt/bin目录中创建新的 phantomjs 文件,并将该文件加入项目的构建队列。
接着,在项目代码中找到pdf转换相关的options配置对象,并对其中的 phantomPath 属性设置进行修改。
最后,在options配置对象中指定 phantomPath 属性值时应指定指向node_modules下的phantomjs-prebuilt/bin目录中的 phantomjs 文件路径。

全部评论 (0)

还没有任何评论哟~