mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
Fixes https://github.com/vercel/next.js/issues/75220 This marks Bun's builtin modules as external, following the same pattern as for Node. - `"bun:ffi"` - `"bun:jsc"` - `"bun:sqlite"` - `"bun:test"` - `"bun:wrap"` - `"bun"` I have not manually tested this change yet, nor attempted to write tests for this. I did check for other places in the code that should be updated and _maybe_ `externals/crates/next-custom-transforms/src/transforms/warn_for_edge_runtime.rs` should as well, but I'll leave that up to you whether or not that makes sense. Opening as a draft until this can be at least manually tested. By the way, node's `sqlite` module is missing from `NODE_EXTERNALS`. That seemed out of scope but worth mentioning. Current error message:  --------- Co-authored-by: Alistair Smith <[email protected]>
34 lines
813 B
TypeScript
34 lines
813 B
TypeScript
'use server'
|
|
|
|
export async function testBunExternals() {
|
|
const modules = [
|
|
'bun:ffi',
|
|
'bun:jsc',
|
|
'bun:sqlite',
|
|
'bun:test',
|
|
'bun:wrap',
|
|
'bun',
|
|
]
|
|
const results: Record<string, string> = {}
|
|
|
|
for (const mod of modules) {
|
|
try {
|
|
require(mod)
|
|
results[mod] = 'loaded'
|
|
} catch (e: any) {
|
|
// Expected: Cannot find module error when not in Bun runtime
|
|
results[mod] = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error'
|
|
}
|
|
}
|
|
|
|
// All modules should be external (not found when not in Bun)
|
|
const allExternal = Object.values(results).every(
|
|
(r) => r === 'external (not found)' || r === 'loaded'
|
|
)
|
|
return allExternal
|
|
? 'All Bun modules are external'
|
|
: 'Some modules were not properly externalized'
|
|
}
|