Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"deps:fix": "syncpack fix --dependency-types prod,dev,peer",
"deps:lint": "syncpack lint --dependency-types prod,dev,peer",
"deps:update": "syncpack update",
"dev": "NODE_OPTIONS=\"--trace-deprecation --disable-warning=DeprecationWarning\" node scripts/dev.mjs",
"dev": "NODE_OPTIONS=\"--import tsx/esm --trace-deprecation --disable-warning=DeprecationWarning\" node scripts/dev.mjs",
"dev:app": "bun run _next dev",
"dev:storybook": "bun run _storybook dev -p 6006",
"dev:email": "bun run _email dev --dir src/emails --port 3005",
Expand All @@ -36,8 +36,8 @@
"lint": "oxlint && oxfmt --check",
"load-env": "node scripts/load-env.mjs",
"migrate": "bun run _payload migrate",
"_next": "NODE_OPTIONS=\"--trace-deprecation --disable-warning=DeprecationWarning\" next",
"_payload": "NODE_OPTIONS=\"--trace-deprecation --disable-warning=DeprecationWarning\" payload",
"_next": "NODE_OPTIONS=\"--import tsx/esm --trace-deprecation --disable-warning=DeprecationWarning\" next",
"_payload": "NODE_OPTIONS=\"--import tsx/esm --trace-deprecation --disable-warning=DeprecationWarning\" payload --disable-transpile",
"_email": "NODE_OPTIONS=\"--trace-deprecation --disable-warning=DeprecationWarning\" email",
"_storybook": "NODE_OPTIONS=\"--trace-deprecation --disable-warning=DeprecationWarning\" storybook",
"prepare": "lefthook install",
Expand Down
21 changes: 18 additions & 3 deletions scripts/start-worker.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,21 @@ const require = createRequire(import.meta.url)
const payloadPkgRoot = path.dirname(path.dirname(require.resolve('payload')))
const payloadCli = path.join(payloadPkgRoot, 'bin.js')

// --import tsx/esm: registers tsx as a persistent ESM loader so that Payload's
// dynamicImport() — which uses eval('import(...)') to hide the call from
// bundler static analysis — can load the .ts handler files at run time.
// --disable-transpile: skips Payload bin.js's own tsx registration, which
// would crash on Node ≥ 26 because tsx 4.22.4's module.register() and
// module.registerHooks() paths are both broken there when tsx is already active.
const tsxArgs = ['--import', 'tsx/esm']
const payloadArgs = ['--disable-transpile']

const jobRunner = spawn(
process.execPath,
[
...tsxArgs,
payloadCli,
...payloadArgs,
'jobs:run',
'--cron',
// every 5 seconds: the web app only enqueues jobs, so this is how quickly
Expand All @@ -57,9 +68,13 @@ const jobRunner = spawn(
},
)

const healthServer = spawn(process.execPath, [payloadCli, 'run', 'scripts/health-server.ts'], {
stdio: 'inherit',
})
const healthServer = spawn(
process.execPath,
[...tsxArgs, payloadCli, ...payloadArgs, 'run', 'scripts/health-server.ts'],
{
stdio: 'inherit',
},
)

const children = [jobRunner, healthServer]
let shuttingDown = false
Expand Down
Loading