ventgreyV
Denoβ€’15mo agoβ€’
9 replies
ventgrey

2.0 node_modules directory approach breaks when using private npm packages.

For some reason Deno 1.0 wasn't able to directly install private npm packages when using deno add. An alternative solution using .npmrc configuration files and enabling nodeModulesDir inside deno.json made it simpler as you would only need to deno cache <entrypoint.ts> to download your private npm package to the projects node_modules directory.

If such package is not present at that time inside the directory the deno compile command would fail when building container images. This is why node_modules/ is needed.

However, Deno 2.0 changed this and now, no matter what approach you take, you end up with a container constantly erroring out saying:

error: Unable to load /tmp/deno-compile-example_app/app/node_modules/.deno/@my-org+mylib@1.0.0/node_modules/@my-org/mylib/index.js imported from file:///tmp/deno-compile-example_app/app/src/app.ts.

Is there a way to force things to work using a deno.json file? I see that the option can now be set to manual, but why on earth would I want to go back to a package.json file? Should I just manually copy cache directories at build time inside the image to trick deno into symlinking them into the node_modules directory?
Was this page helpful?