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

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 phantomjs-prebuilt@2.1.13 (and phantomjs-prebuilt@2.1.4)

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

About this issue

Most upvoted comments

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.

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”

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 🚀

I’m using 2.1.16 and this worked for me npm install phantomjs-prebuilt@2.1.16 --update-binary

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.

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 > phantomjs-prebuilt@2.1.16 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 + html-pdf@2.2.0 added 82 packages from 77 contributors in 79.333s

And pdf.create(…) works good now.

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.

Hi,

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

Thank you for helping

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

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.