Bundling of dependency `pg` fails for `workers` preset because it bundle the optional dependency `pg-native`. Is there a way to ignore this ?
leo91000 opened this issue · 5 comments
Environment
Node.JS : 16.15.0
NItro : 0.3.8
Reproduction
Here is a simple reproduction link : Stackblitz
Just run NITRO_PRESET=cloudflare npm run blitz
Notice the message 'pg-native' is imported by pg-native?commonjs-external, but could not be resolved – treating it as an external dependence
The .output/server/index.mjs
build has now an import e as * from 'pg-native'
: it is not compatible with cloudflare or any worker.
Describe the bug
To generate the build, nitro bundle pg
with it's optional peer dependency pg-native
. However, pg-native
is not compatible with workers since it relies on libpq
.
However this dependency is optional and it would work perfectly fine without it.
-> Is there a way to ignore this dependency, or to mock it because we never use it ?
Additional context
No response
Logs
No response
any movement on this issue?
Hi. I assume latest version of pg
should be more compatible with cloudflare workers. If you still experience issues, please ping to reopen 🙏🏼
(BTW main support will be done via db0 connectors)
Hi pi0, definitly better support with pg* and cloudflare for sure.
I was able to set these values in my nuxt project, for anyone that finds and is seeking a resolution
nitro: {
esbuild: {
options: {
target: "ESNEXT",
},
},
rollupConfig: {
external: ["cloudflare:sockets"],
},
preset: "cloudflare-pages",
},
TIL about cloudflare:sockets
. Is there any link to docs for it? (we might add it to externals by default)
Nothing concrete, no. Seen it across various issues though. Most relevant would be this one: #1967