Node-html-pdf: "html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using \'options.phantomPath

Created on 4 Jun 2018  路  17Comments  路  Source: marcbachmann/node-html-pdf

hi ,i'm trying to use html-pdf module , but it throws "html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using \'options.phantomPath" error ,
steps i tried to resolve :
1.installed html-pdf

  1. rm -rf node_modules/phantomjs-prebuilt (or npm uninstall phantomjs-prebuilt)
  2. npm install [email protected] (and[email protected])

but no use , it was throwing same error , then i assignedoptions.phantomPath to node_modules\phantomjs-prebuilt

after that it is throwing following error , please help

{"error":{"message":"spawn EACCES","stack":"Error: spawn EACCES\\n at _errnoException (util.js:1022:11)\\n at ChildProcess.spawn (internal/child_process.js:323:11)\\n at Object.exports.spawn (child_process.js:502:9)\\n at PDF.PdfExec [as exec] (/root/PGServerJs/node_modules/html-pdf/lib/pdf.js:88:28)\\n at PDF.PdfToFile [as toFile] (/root/PGServerJs/node_modules/html-pdf/lib/pdf.js:83:8)\\n

i tried to change the permissions of phantomjs , but still it is not working

Most helpful comment

In my case this solved the issue:
$ (sudo) npm link phantomjs-prebuilt

I am not an expert, but it seems that since html-pdf is installed globally you have to link these global installations to your project. So my installation looks like this:

$ (sudo) npm install html-pdf -g
$ (sudo) npm link html-pdf
$ (sudo) npm link phantomjs-prebuilt

If this is somehow not the real way to go, I would be happy about other suggestions as I am planning to use this for an upcoming project.

All 17 comments

Hi,

I'm facing the same issue.
We're using version 2.1.0

Thank you for helping

try to install like I do.........
Go to your node_modules folder through terminal and use the command "sudo node ./install.js" or "sudo node ./install.js -f"............
this will definitely install this module.....

html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using 'options.phantomPath'
AssertionError [ERR_ASSERTION]: html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using 'options.phantomPath'
Sorry, an error has occured, Requested page not found!

In my case this solved the issue:
$ (sudo) npm link phantomjs-prebuilt

I am not an expert, but it seems that since html-pdf is installed globally you have to link these global installations to your project. So my installation looks like this:

$ (sudo) npm install html-pdf -g
$ (sudo) npm link html-pdf
$ (sudo) npm link phantomjs-prebuilt

If this is somehow not the real way to go, I would be happy about other suggestions as I am planning to use this for an upcoming project.

Thanks @Paul-JO Working fine

Great that it works @balaji4191
I noticed some issues after doing this when installing new packages as those linked packages do not contain repository fields in their package descriptions. To solve this one would need to remove the node_modules folder, install the new package and to link the html-pdf and phantomjs again.

Are you using html-pdf on the frontend or the server? I've been using it on the server without any trouble but I just tried to use it on the frontend in order to save the data transfered (up to 1mb per generated PDF), and this error happened...

aa

I also encountered this problem.

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf.
I just did a npm link html-pdf that resulted in
d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js
> [email protected] install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt
> node install.js
PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
Receiving...
[========================================] 99%
Received 17767K total.
Extracting zip contents
Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Writing location.js file
Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe
+ [email protected]
added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

An npm rebuild might be needed, see https://github.com/Medium/phantomjs, section "Cross-Platform Repositories".
This was the reason, when we encountered this problem.
See also pull request #555

I'm using 2.1.16 and this worked for me
npm install [email protected] --update-binary

First install phantomjs using,
brew tap homebrew/cask
brew cask install phantomjs

Try if "phantomjs -v" works.

If works, then type "which phantomjs", this is where the /path/to/phantomjs

Then edit /usr/local/bin/html-pdf > lib > pdf.js
Add the line after "this.options = options || {}"
this.options.phantomPath = "/path/to/phantomjs"

This solved the problem for me.

Install PhantomJs

https://www.vultr.com/docs/how-to-install-phantomjs-on-ubuntu-16-04
Check
phantomjs --version -> O/p 2.1.1

Then in the htm-pdf module
html-pdf -> lib -> pdf.js
Add the line after "this.options = options || {}"
this.options.phantomPath = "/usr/local/bin/phantomjs"

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf.
I just did a npm link html-pdf that resulted in
d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js
> [email protected] install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt
> node install.js
PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
Receiving...
[========================================] 99%
Received 17767K total.
Extracting zip contents
Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Writing location.js file
Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe
+ [email protected]
added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

This worked for me Running npm link html-pdf and getting the output as above.

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf.
I just did a npm link html-pdf that resulted in
d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js
> [email protected] install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt
> node install.js
PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
Receiving...
[========================================] 99%
Received 17767K total.
Extracting zip contents
Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom
Writing location.js file
Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe
+ [email protected]
added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

This one helps me too. Thanks a ton @VijayakumarManickam

In html-pdf option, we have a property phantomPath:
`// File options
"type": "pdf", // allowed file types: png, jpeg, pdf
"quality": "75", // only used for types png & jpeg

// Script options
"phantomPath": "./node_modules/phantomjs/bin/phantomjs", // PhantomJS binary which should get downloaded automatically
"phantomArgs": [], // array of strings used as phantomjs args e.g. ["--ignore-ssl-errors=yes"]
"localUrlAccess": false, // Prevent local file:// access by passing '--local-url-access=false' to phantomjs
`
Ubuntu server cannot found phantom from node-modules so I had to install phantomjs by the script and pass the path '/usr/local/bin/phantomjs' to that option. It worked for me, very crazy issue.

The script to run in Docker file:
RUN apk add --no-cache curl && \ cd /tmp && curl -Ls https://github.com/dustinblackman/phantomized/releases/download/2.1.1/dockerized-phantomjs.tar.gz | tar xz && \ cp -R lib lib64 / && \ cp -R usr/lib/x86_64-linux-gnu /usr/lib && \ cp -R usr/share /usr/share && \ cp -R etc/fonts /etc && \ curl -k -Ls https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar -jxf - &&\ cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs && \ rm -fR phantomjs-2.1.1-linux-x86_64 && \ apk del curl

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Messilimeng picture Messilimeng  路  4Comments

B-StS picture B-StS  路  5Comments

adman020 picture adman020  路  5Comments

tsp1996 picture tsp1996  路  5Comments

rayax86 picture rayax86  路  5Comments