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]>
78 lines
2.0 KiB
TypeScript
78 lines
2.0 KiB
TypeScript
export default function Page() {
|
|
// These should be handled as external modules
|
|
// When not running in Bun, require() will throw "Cannot find module"
|
|
let bunFfiStatus = 'not loaded'
|
|
let bunJscStatus = 'not loaded'
|
|
let bunSqliteStatus = 'not loaded'
|
|
let bunTestStatus = 'not loaded'
|
|
let bunWrapStatus = 'not loaded'
|
|
let bunStatus = 'not loaded'
|
|
|
|
try {
|
|
require('bun:ffi')
|
|
bunFfiStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
// Expected error when not running in Bun
|
|
bunFfiStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
try {
|
|
require('bun:jsc')
|
|
bunJscStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
bunJscStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
try {
|
|
require('bun:sqlite')
|
|
bunSqliteStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
bunSqliteStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
try {
|
|
require('bun:test')
|
|
bunTestStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
bunTestStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
try {
|
|
require('bun:wrap')
|
|
bunWrapStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
bunWrapStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
try {
|
|
require('bun')
|
|
bunStatus = 'loaded successfully'
|
|
} catch (e: any) {
|
|
bunStatus = e.message.includes('Cannot find module')
|
|
? 'external (not found)'
|
|
: 'error: ' + e.message
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<h1>Bun Externals Test</h1>
|
|
<div id="bun-ffi">{bunFfiStatus}</div>
|
|
<div id="bun-jsc">{bunJscStatus}</div>
|
|
<div id="bun-sqlite">{bunSqliteStatus}</div>
|
|
<div id="bun-test">{bunTestStatus}</div>
|
|
<div id="bun-wrap">{bunWrapStatus}</div>
|
|
<div id="bun">{bunStatus}</div>
|
|
</div>
|
|
)
|
|
}
|