ventgreyV
Denoβ€’16mo 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?