Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): Pass module into loadModule #15139

Merged
merged 2 commits into from
Jan 27, 2025
Merged

Conversation

jrandolf
Copy link
Contributor

  • [-] If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).
    Certainly! Here’s a more elegantly phrased version of your content:

The loadModule function currently utilizes require to load modules starting from the @sentry/core directory. This approach is incompatible with package managers like pnpm, which do not hoist dependencies. Consequently, when another module, such as @sentry/nextjs, invokes loadModule, it fails to locate its own dependencies because the search initiates within the @sentry/core tree.

Example Scenario

Current Behavior:

If @sentry/nextjs calls loadModule('@sentry/webpack-plugin'), the function attempts to locate @sentry/webpack-plugin within the dependencies of @sentry/core. This results in the module not being found if @sentry/webpack-plugin is not a dependency of @sentry/core.

Proposed Change:

With the current pull request, invoking loadModule('@sentry/webpack-plugin', module) directs the search to the dependencies of @sentry/nextjs instead of @sentry/core. This ensures that loadModule correctly resolves modules based on the calling module’s dependency tree, accommodating environments where dependencies are not hoisted.

Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @jrandolf thanks for contributing! This sounds reasonable to me. Let's see if CI agrees :) In the current state, this would be a breaking change which is fine, since we're working on v9 of the SDK anyway. If you'd like to see this released for v8 of the SDK, we need to make the new parameter optional, so that there's no API breakage.

I'm just a bit surprised that this surfaces only now, given that pnpm and NextJS are used quite frequently, I'd imagine.

@jrandolf jrandolf force-pushed the develop branch 2 times, most recently from 9a2ab42 to e30fc15 Compare January 23, 2025 15:04
@jrandolf jrandolf requested a review from Lms24 January 23, 2025 15:04
@Lms24
Copy link
Member

Lms24 commented Jan 24, 2025

heads-up: just assigning myself to review and merge this on Monday. Restarted CI in the meantime. Thanks for making the parameter optional!

@Lms24 Lms24 self-assigned this Jan 24, 2025
Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@Lms24 Lms24 merged commit 70d53a9 into getsentry:develop Jan 27, 2025
131 checks passed
Lms24 pushed a commit that referenced this pull request Jan 27, 2025
The `loadModule` function currently utilizes `require` to load modules
starting from the `@sentry/core` directory. This approach is
incompatible with package managers like pnpm, which do not hoist
dependencies. Consequently, when another module, such as @sentry/nextjs,
invokes `loadModule`, it fails to locate its own dependencies because
the search initiates within the @sentry/core tree.
Lms24 added a commit that referenced this pull request Jan 27, 2025
This PR adds the external contributor to the CHANGELOG.md file, so that
they are credited for their contribution. See #15139

---------

Co-authored-by: Lukas Stracke <[email protected]>
Lms24 added a commit that referenced this pull request Jan 27, 2025
backport of #15139

---------

Co-authored-by: Randolf J <[email protected]>
Co-authored-by: Abhijeet Prasad <[email protected]>
alexandresoro pushed a commit to alexandresoro/ouca-web that referenced this pull request Jan 29, 2025
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@sentry/react](https://github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.51.0` -> `8.52.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.51.0/8.52.0) |

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v8.52.0`](https://github.com/getsentry/sentry-javascript/releases/tag/8.52.0)

[Compare Source](getsentry/sentry-javascript@8.51.0...8.52.0)

##### Important Changes

-   **feat(solidstart): Add `withSentry` wrapper for SolidStart config ([#&#8203;15135](getsentry/sentry-javascript#15135

To enable the SolidStart SDK, wrap your SolidStart Config with `withSentry`. The `sentrySolidStartVite` plugin is now automatically
added by `withSentry` and you can pass the Sentry build-time options like this:

```js
import { defineConfig } from '@&#8203;solidjs/start/config';
import { withSentry } from '@&#8203;sentry/solidstart';

export default defineConfig(
  withSentry(
    {
      /* Your SolidStart config options... */
    },
    {
      // Options for setting up source maps
      org: process.env.SENTRY_ORG,
      project: process.env.SENTRY_PROJECT,
      authToken: process.env.SENTRY_AUTH_TOKEN,
    },
  ),
);
```

With the `withSentry` wrapper, the Sentry server config should not be added to the `public` directory anymore.
Add the Sentry server config in `src/instrument.server.ts`. Then, the server config will be placed inside the server build output as `instrument.server.mjs`.

Now, there are two options to set up the SDK:

1.  **(recommended)** Provide an `--import` CLI flag to the start command like this (path depends on your server setup):
    `node --import ./.output/server/instrument.server.mjs .output/server/index.mjs`
2.  Add `autoInjectServerSentry: 'top-level-import'` and the Sentry config will be imported at the top of the server entry (comes with tracing limitations)
    ```js
    withSentry(
      {
        /* Your SolidStart config options... */
      },
      {
        // Optional: Install Sentry with a top-level import
        autoInjectServerSentry: 'top-level-import',
      },
    );
    ```

##### Other Changes

-   feat(v8/core): Add client outcomes for breadcrumbs buffer ([#&#8203;15149](getsentry/sentry-javascript#15149))
-   feat(v8/core): Improve error formatting in ZodErrors integration ([#&#8203;15155](getsentry/sentry-javascript#15155))
-   fix(v8/bun): Ensure instrumentation of `Bun.serve` survives a server reload ([#&#8203;15157](getsentry/sentry-javascript#15157))
-   fix(v8/core): Pass `module` into `loadModule` ([#&#8203;15139](getsentry/sentry-javascript#15139)) ([#&#8203;15166](getsentry/sentry-javascript#15166))

Work in this release was contributed by [@&#8203;jahands](https://github.com/jahands), [@&#8203;jrandolf](https://github.com/jrandolf), and [@&#8203;nathankleyn](https://github.com/nathankleyn). Thank you for your contributions!

#### Bundle size 📦

| Path                                                             | Size              |
| ---------------------------------------------------------------- | ----------------- |
| [@&#8203;sentry/browser](https://github.com/sentry/browser)                                                  | 23.32 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) - with treeshaking flags                         | 23.2 KB   |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing)                                  | 35.88 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay)                          | 73.23 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 66.7 KB   |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 77.54 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 89.47 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Feedback)                                 | 39.53 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback)                             | 27.94 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync)                            | 32.73 KB  |
| [@&#8203;sentry/react](https://github.com/sentry/react)                                                    | 26 KB     |
| [@&#8203;sentry/react](https://github.com/sentry/react) (incl. Tracing)                                    | 38.71 KB  |
| [@&#8203;sentry/vue](https://github.com/sentry/vue)                                                      | 27.6 KB   |
| [@&#8203;sentry/vue](https://github.com/sentry/vue) (incl. Tracing)                                      | 37.74 KB  |
| [@&#8203;sentry/svelte](https://github.com/sentry/svelte)                                                   | 23.49 KB  |
| CDN Bundle                                                       | 24.52 KB  |
| CDN Bundle (incl. Tracing)                                       | 37.59 KB  |
| CDN Bundle (incl. Tracing, Replay)                               | 72.87 KB  |
| CDN Bundle (incl. Tracing, Replay, Feedback)                     | 78.24 KB  |
| CDN Bundle - uncompressed                                        | 72.01 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                        | 111.51 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                | 225.76 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed      | 238.86 KB |
| [@&#8203;sentry/nextjs](https://github.com/sentry/nextjs) (client)                                          | 38.96 KB  |
| [@&#8203;sentry/sveltekit](https://github.com/sentry/sveltekit) (client)                                       | 36.39 KB  |
| [@&#8203;sentry/node](https://github.com/sentry/node)                                                     | 162.87 KB |
| [@&#8203;sentry/node](https://github.com/sentry/node) - without tracing                                   | 99.18 KB  |
| [@&#8203;sentry/aws-serverless](https://github.com/sentry/aws-serverless)                                           | 126.69 KB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzguMiIsInVwZGF0ZWRJblZlciI6IjM5LjEzOC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tristess.app/alexandresoro/ouca-web/pulls/63
Reviewed-by: Alexandre Soro <[email protected]>
Co-authored-by: renovate <[email protected]>
Co-committed-by: renovate <[email protected]>
alexandresoro pushed a commit to alexandresoro/ouca-backend that referenced this pull request Jan 29, 2025
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@sentry/node](https://github.com/getsentry/sentry-javascript/tree/master/packages/node) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.51.0` -> `8.52.0`](https://renovatebot.com/diffs/npm/@sentry%2fnode/8.51.0/8.52.0) |

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/node)</summary>

### [`v8.52.0`](https://github.com/getsentry/sentry-javascript/releases/tag/8.52.0)

[Compare Source](getsentry/sentry-javascript@8.51.0...8.52.0)

##### Important Changes

-   **feat(solidstart): Add `withSentry` wrapper for SolidStart config ([#&#8203;15135](getsentry/sentry-javascript#15135

To enable the SolidStart SDK, wrap your SolidStart Config with `withSentry`. The `sentrySolidStartVite` plugin is now automatically
added by `withSentry` and you can pass the Sentry build-time options like this:

```js
import { defineConfig } from '@&#8203;solidjs/start/config';
import { withSentry } from '@&#8203;sentry/solidstart';

export default defineConfig(
  withSentry(
    {
      /* Your SolidStart config options... */
    },
    {
      // Options for setting up source maps
      org: process.env.SENTRY_ORG,
      project: process.env.SENTRY_PROJECT,
      authToken: process.env.SENTRY_AUTH_TOKEN,
    },
  ),
);
```

With the `withSentry` wrapper, the Sentry server config should not be added to the `public` directory anymore.
Add the Sentry server config in `src/instrument.server.ts`. Then, the server config will be placed inside the server build output as `instrument.server.mjs`.

Now, there are two options to set up the SDK:

1.  **(recommended)** Provide an `--import` CLI flag to the start command like this (path depends on your server setup):
    `node --import ./.output/server/instrument.server.mjs .output/server/index.mjs`
2.  Add `autoInjectServerSentry: 'top-level-import'` and the Sentry config will be imported at the top of the server entry (comes with tracing limitations)
    ```js
    withSentry(
      {
        /* Your SolidStart config options... */
      },
      {
        // Optional: Install Sentry with a top-level import
        autoInjectServerSentry: 'top-level-import',
      },
    );
    ```

##### Other Changes

-   feat(v8/core): Add client outcomes for breadcrumbs buffer ([#&#8203;15149](getsentry/sentry-javascript#15149))
-   feat(v8/core): Improve error formatting in ZodErrors integration ([#&#8203;15155](getsentry/sentry-javascript#15155))
-   fix(v8/bun): Ensure instrumentation of `Bun.serve` survives a server reload ([#&#8203;15157](getsentry/sentry-javascript#15157))
-   fix(v8/core): Pass `module` into `loadModule` ([#&#8203;15139](getsentry/sentry-javascript#15139)) ([#&#8203;15166](getsentry/sentry-javascript#15166))

Work in this release was contributed by [@&#8203;jahands](https://github.com/jahands), [@&#8203;jrandolf](https://github.com/jrandolf), and [@&#8203;nathankleyn](https://github.com/nathankleyn). Thank you for your contributions!

#### Bundle size 📦

| Path                                                             | Size              |
| ---------------------------------------------------------------- | ----------------- |
| [@&#8203;sentry/browser](https://github.com/sentry/browser)                                                  | 23.32 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) - with treeshaking flags                         | 23.2 KB   |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing)                                  | 35.88 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay)                          | 73.23 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 66.7 KB   |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 77.54 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 89.47 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. Feedback)                                 | 39.53 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback)                             | 27.94 KB  |
| [@&#8203;sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync)                            | 32.73 KB  |
| [@&#8203;sentry/react](https://github.com/sentry/react)                                                    | 26 KB     |
| [@&#8203;sentry/react](https://github.com/sentry/react) (incl. Tracing)                                    | 38.71 KB  |
| [@&#8203;sentry/vue](https://github.com/sentry/vue)                                                      | 27.6 KB   |
| [@&#8203;sentry/vue](https://github.com/sentry/vue) (incl. Tracing)                                      | 37.74 KB  |
| [@&#8203;sentry/svelte](https://github.com/sentry/svelte)                                                   | 23.49 KB  |
| CDN Bundle                                                       | 24.52 KB  |
| CDN Bundle (incl. Tracing)                                       | 37.59 KB  |
| CDN Bundle (incl. Tracing, Replay)                               | 72.87 KB  |
| CDN Bundle (incl. Tracing, Replay, Feedback)                     | 78.24 KB  |
| CDN Bundle - uncompressed                                        | 72.01 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                        | 111.51 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                | 225.76 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed      | 238.86 KB |
| [@&#8203;sentry/nextjs](https://github.com/sentry/nextjs) (client)                                          | 38.96 KB  |
| [@&#8203;sentry/sveltekit](https://github.com/sentry/sveltekit) (client)                                       | 36.39 KB  |
| [@&#8203;sentry/node](https://github.com/sentry/node)                                                     | 162.87 KB |
| [@&#8203;sentry/node](https://github.com/sentry/node) - without tracing                                   | 99.18 KB  |
| [@&#8203;sentry/aws-serverless](https://github.com/sentry/aws-serverless)                                           | 126.69 KB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzguMiIsInVwZGF0ZWRJblZlciI6IjM5LjEzOC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.tristess.app/alexandresoro/ouca-backend/pulls/509
Reviewed-by: Alexandre Soro <[email protected]>
Co-authored-by: renovate <[email protected]>
Co-committed-by: renovate <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants