Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ganeshmogare opened this issue Jun 4, 2018 · 22 comments

Comments

@ganeshmogare
Copy link

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
2. rm -rf node_modules/phantomjs-prebuilt (or npm uninstall phantomjs-prebuilt)
3. 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

@jourdan-qe
Copy link

Hi,

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

Thank you for helping

@varuntblr
Copy link

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.....

@ganeshpaiya
Copy link

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!

@Paul-JO
Copy link

Paul-JO commented Feb 26, 2019

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.

@balaji4191
Copy link

Thanks @Paul-JO Working fine

@Paul-JO
Copy link

Paul-JO commented Mar 1, 2019

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.

@stemtra
Copy link

stemtra commented Jul 22, 2019

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...

@Venugopal619
Copy link

aa

@Young6118
Copy link

I also encountered this problem.

@VijayakumarManickam
Copy link

VijayakumarManickam commented Feb 6, 2020

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.

@jdoose
Copy link

jdoose commented Feb 20, 2020

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

@NathanD14
Copy link

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

@Nana7926
Copy link

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.

@imvikaskohli
Copy link

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"

@NeniEmSu
Copy link

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.

@md-abdul-halim-rafi
Copy link

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

@xoapit
Copy link

xoapit commented May 10, 2021

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

@mir1198yusuf
Copy link

In options of pdf.create(html,options) add below :
"phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs", .

Notice I am mentioned phantomjs-prebuilt & not default phantomjs.

I was able to run thie library by above methods on all devices without any global installations.

@scristian9
Copy link

scristian9 commented Apr 6, 2022

Very thanks this solution work for me in serverless.

My steps were:

$ npm install phantomjs-prebuilt

pdf.create(html,{ "phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs" });

Then 🚀

@ladaniavadh
Copy link

I faced the same error and I downgrade my node version from v16.14.1 to v14.18.1 and it is working fo me now

@czarjulius
Copy link

This is how I resolved mine. I performed an upgrade on my Docker node, transitioning from node:16.15.0-slim to node:20.5.0. It's working perfectly now.

@hypo-thesis
Copy link

hypo-thesis commented Aug 11, 2023

In options of pdf.create(html,options) add below : "phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs", .

Notice I am mentioned phantomjs-prebuilt & not default phantomjs.

I was able to run thie library by above methods on all devices without any global installations.

This was it for me although phantomPath: "./node_modules/phantomjs-prebuilt/bin/phantomjs"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests