Uh oh!
There was an error while loading. Please reload this page.
feat: Remove support for initialising via --require - #22513
Conversation
size-limit report 📦
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 143a4cc. Configure here.
| const joinedArgs = execArgv.join(' '); | ||
| const importPaths = Array.from(joinedArgs.matchAll(/--import[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); | ||
| const requirePaths = Array.from(joinedArgs.matchAll(/--require[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); | ||
| const requirePaths = Array.from(joinedArgs.matchAll(/(?:--require|-r)[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); |
There was a problem hiding this comment.
Require warning misses package preloads
Medium Severity
The new --require migration warning relies on getEntryPointType(), but parseProcessPaths resolves preload targets with path.resolve(cwd, ...). Package specifiers like @sentry/node/init never match real stack filenames under node_modules, so the documented no-code --require entry points silently skip the warning.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 143a4cc. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
This PR simplifies the `register.ts` hook registration to remove all the lazy loading. Once the lazy loading was removed there were a number of other things required to get this actually passing all the e2e tests: - [x] Bundle the whole orchestrion runtime chain (`@apm-js-collab/*`, meriyah, esquery, …) into `@sentry/server-utils`' build (all now devDependencies). The dist only has relative requires, which removes two classes of breakage: - `require(esm)`: the CJS build is now genuine CJS — fixes AWS Lambda (`--no-experimental-require-module`) and the `Module.register` loader-thread crash on Node 22.15–24.12 - Build-time tracer vs runtime exports-map divergence on meriyah's `module-sync` condition (vercel/nft#603, nitrojs/nitro#4456) — no runtime package resolution left to get wrong - This also reduces the bundler impact of all these dependencies from +70kB to +20kB - [x] The `Module.register` async hook is now a self-referenced entrypoint of our own ESM build (`@sentry/server-utils/orchestrion/hook`), sharing the vendored chunks - [x] The webpack/Turbopack loader ships as a bundled entrypoint (`./orchestrion/webpack-loader`), resolved by self-reference since the `@apm-js-collab` packages are no longer installed - [x] Fix build-time Rollup ESM interop issues (Node builtins need `default` interop; default-only ESM deps need `requireReturnsDefault: 'auto'`) - [x] NextJS: force `@sentry/server-utils` external via absolute-path externals so `register.ts` stays in `node_modules` and its `Module.register` self-reference resolves under pnpm — also removes the `tracingHooksPath` workaround - [x] Bumps the `@sentry/node` size limit by ~40kb — the lazy loading previously hid this code from the size report - [x] #22513


Initialising via
--requireresults in the SDK being loaded and initialised in Node's ESM loader thread 🤯This causes numerous issues:
require(esm)does not work correctly - feat: Convert code to CJS apm-js-collab/tracing-hooks#51The last straw way failing to
require(esm). This stops us from using any import/require chain that results in CJS requiring ESM. It's part of the reason/server-utils/src/orchestrion/runtime/register.tsneeded to do lazy loading.Since it's so problematic and
--importsupports loading ESM or CJS everywhere, we should remove support and warn users!