Using pdf-generator on Windows: pdf-generator cannot find headless chrome install

Hello everyone,

I am trying to use pdf-generator with phoenix on Windows 11. However, I am struggling with setup.

If I use the compiler: "make chrome" option in the deps and run my code, I get a Module not found error for chromium (at myProject\_build\dev\lib\pdf_generator\priv\node_modules\chrome-headless-render-pdf\dist\cli\chrome-headless-render-pdf.js; the node_modules directory does not exist)

If instead I install globally, I can go a little further, but when I load the page, I still get this error:

construction of binary failed: segment 2 of type 'binary': expected a binary but got: {:generator_failed, "node:internal/modules/cjs/loader:1148
  throw err;
  ^

Error: Cannot find module 'myProject\assets\node_modules\chrome-headless-render-pdf\dist\cli\chrome-headless-render-pdf.js'

Once again, the directory that doesn’t exist is node_modules.

I might be missing something obvious, but I can’t seem to get this to work. Any advice (or further inquiry) would be appreciated.

1 Like

I suggest using Docker, run the whole application in a Linux based container.

1 Like

@timasp If you’re not going to be deploying to a Windows machine then you should be doing this in WSL, Docker or a VM.

You’re going to need to change the config for the make command. Have you got node installed and have that setup as per the readme? You’ll want to be running things from the Developer Command Prompt and calling nmake instead of make but I dare say it’s possibly going to be as lot easier to use the global system executable (install chrome headless globally with npm).

A post was split to a new topic: Split from windows thread

I have fixed this problem! It was two parted: I needed to copy the package.json from the package over to assets, and then actually install chrome manually on my computer (the package install doesn’t install it). I included that I was on windows, but that was a red herring that hasn’t yet caused me trouble. Onward to the next roadblock!

2 Likes

If the PDF generation script needs to be run simultaniously for many users, then AWS Lambda is way to go. Saying that from experience.