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.
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!