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?7 Replies
Fixed by keeping deps inside a minimal
package.json
file and the important stull like import maps inside deno.json
it's kind of carcinogenic but it does the job ๐
Update: Apparently bcrypt
might not be compatible with deno 2.0 as the deno compile binary doesn't find the library if it's being used as a library dependency.@ventgrey sorry for the trouble, could you open a GitHub issue for this?
Is it too late for this? Any extra context that I need to add in such issue? ๐ค
Not really, it would still be useful to have an issue
I think the context you put here is enough ๐
Okay, I'll open one ๐ I've got even more context. It seems that the underlying issue is with libraries that depend on
npm
packages that need external FFI mods, this results in the deno compile
command running correctly but not inserting the main ESM script in the final binaryOkay, great that you got more info! :deno_thankyou:
I think there is already an issue that I can link to this. I've started redacting my issue though, https://github.com/denoland/deno/issues/23266
GitHub
Add support for node native addons / FFI in
deno compile
ยท Issue ...Discussed in #23255 Originally posted by babakfp April 6, 2024 Hi ๐ parcel-bundler/lightningcss#712 Based on this comment parcel-bundler/lightningcss#712 (comment) and this: (I used this library ht...