@@ -83,7 +83,7 @@ for the multiplexed transport to reference for routing.
8383
8484** Install the below code snippet in your host:**
8585
86- ``` javascript
86+ ``` javascript {tabTitle:NPM}{index.js}
8787import {
8888 init ,
8989 makeFetchTransport ,
@@ -131,6 +131,68 @@ init({
131131 },
132132});
133133` ` `
134+ ` ` ` html {tabTitle: CDN / Loader Bundle}{filename: index .html }
135+ < script
136+ src= " https://browser.sentry-cdn.com/{{@inject packages.version('sentry.javascript.browser') }}/bundle.min.js"
137+ integrity= " sha384-{{@inject packages.checksum('sentry.javascript.browser', 'bundle.min.js', 'sha384-base64') }}"
138+ crossorigin= " anonymous"
139+ >< / script>
140+
141+ < script
142+ src= " https://browser.sentry-cdn.com/{{@inject packages.version('sentry.javascript.browser') }}/multiplexedtransport.min.js"
143+ integrity= " sha384-{{@inject packages.checksum('sentry.javascript.browser', 'multiplexedtransport.min.js', 'sha384-base64') }}"
144+ crossorigin= " anonymous"
145+ >< / script>
146+
147+ < script
148+ src= " https://browser.sentry-cdn.com/{{@inject packages.version('sentry.javascript.browser') }}/modulemetadata.min.js"
149+ integrity= " sha384-{{@inject packages.checksum('sentry.javascript.browser', 'modulemetadata.min.js', 'sha384-base64') }}"
150+ crossorigin= " anonymous"
151+ >< / script>
152+
153+
154+ < script>
155+ const EXTRA_KEY = " ROUTE_TO" ;
156+
157+ const transport = Sentry .makeMultiplexedTransport (Sentry .makeFetchTransport , (args ) => {
158+ const event = args .getEvent ();
159+ if (
160+ event &&
161+ event .extra &&
162+ EXTRA_KEY in event .extra &&
163+ Array .isArray (event .extra [EXTRA_KEY ])
164+ ) {
165+ return event .extra [EXTRA_KEY ];
166+ }
167+ return [];
168+ });
169+
170+ Sentry .init ({
171+ dsn: " __DEFAULT_DSN__" ,
172+ integrations: [Sentry .moduleMetadataIntegration ()],
173+ transport,
174+ beforeSend : (event ) => {
175+ if (event ? .exception ? .values ? .[0 ].stacktrace .frames ) {
176+ const frames = event .exception .values [0 ].stacktrace .frames ;
177+ // Find the last frame with module metadata containing a DSN
178+ const routeTo = frames
179+ .filter ((frame ) => frame .module_metadata && frame .module_metadata .dsn )
180+ .map ((v ) => v .module_metadata )
181+ .slice (- 1 ); // using top frame only - you may want to customize this according to your needs
182+
183+ if (routeTo .length ) {
184+ event .extra = {
185+ ... event .extra ,
186+ [EXTRA_KEY ]: routeTo,
187+ };
188+ }
189+ }
190+
191+ return event ;
192+ },
193+ });
194+ < / script>
195+ ` ` `
134196
135197Once this is set up, errors - both handled and unhandled - will be automatically routed to the right project.
136198
0 commit comments