Skip to content

Commit 2fd7607

Browse files
authored
fix: skip browser error reporting for webpack (#6264)
1 parent 9e54e37 commit 2fd7607

File tree

4 files changed

+61
-53
lines changed

4 files changed

+61
-53
lines changed

e2e/cases/browser-logs/basic-error/index.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
import { test } from '@e2e/helper';
1+
import { rspackTest } from '@e2e/helper';
22

33
const EXPECTED_LOG =
44
'error [browser] Uncaught Error: test (src/index.js:1:0)';
55

6-
test('should forward browser error logs to terminal by default', async ({
7-
dev,
8-
}) => {
9-
const rsbuild = await dev();
10-
await rsbuild.expectLog(EXPECTED_LOG, { posix: true });
11-
});
6+
rspackTest(
7+
'should forward browser error logs to terminal by default',
8+
async ({ dev }) => {
9+
const rsbuild = await dev();
10+
await rsbuild.expectLog(EXPECTED_LOG, { posix: true });
11+
},
12+
);
1213

13-
test('should disable forwarding browser error logs', async ({ dev }) => {
14+
rspackTest('should disable forwarding browser error logs', async ({ dev }) => {
1415
const rsbuild = await dev({
1516
config: {
1617
dev: {
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { gotoPage, test } from '@e2e/helper';
1+
import { gotoPage, rspackTest } from '@e2e/helper';
22

3-
test('should not output the same error log consecutively', async ({
4-
devOnly,
5-
page,
6-
}) => {
7-
const rsbuild = await devOnly();
8-
await gotoPage(page, rsbuild, '/', { hash: 'test1' });
9-
await rsbuild.expectLog('Uncaught Error: #test1');
10-
rsbuild.clearLogs();
3+
rspackTest(
4+
'should not output the same error log consecutively',
5+
async ({ devOnly, page }) => {
6+
const rsbuild = await devOnly();
7+
await gotoPage(page, rsbuild, '/', { hash: 'test1' });
8+
await rsbuild.expectLog('Uncaught Error: #test1');
9+
rsbuild.clearLogs();
1110

12-
await page.reload();
13-
await gotoPage(page, rsbuild, '/', { hash: 'test2' });
14-
await page.reload();
15-
await rsbuild.expectLog('Uncaught Error: #test2');
16-
rsbuild.expectNoLog('Uncaught Error: #test1');
17-
});
11+
await page.reload();
12+
await gotoPage(page, rsbuild, '/', { hash: 'test2' });
13+
await page.reload();
14+
await rsbuild.expectLog('Uncaught Error: #test2');
15+
rsbuild.expectNoLog('Uncaught Error: #test1');
16+
},
17+
);
Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,33 @@
1-
import { test } from '@e2e/helper';
1+
import { rspackTest } from '@e2e/helper';
22

3-
test('should forward browser unhandled rejection logs to terminal', async ({
4-
dev,
5-
}) => {
6-
const rsbuild = await dev();
7-
await rsbuild.expectLog('error [browser] Uncaught (in promise) 404');
8-
await rsbuild.expectLog('error [browser] Uncaught (in promise) false');
9-
await rsbuild.expectLog('error [browser] Uncaught (in promise) null');
10-
await rsbuild.expectLog('error [browser] Uncaught (in promise) undefined');
11-
await rsbuild.expectLog('error [browser] Uncaught (in promise) string');
12-
await rsbuild.expectLog(
13-
'error [browser] Uncaught (in promise) {"name":"Custom","message":"custom message"}',
14-
);
15-
await rsbuild.expectLog(
16-
'error [browser] Uncaught (in promise) Error: reason (src/index.js:7:0)',
17-
{ posix: true },
18-
);
19-
await rsbuild.expectLog(
20-
'error [browser] Uncaught (in promise) AbortError: Aborted',
21-
);
22-
await rsbuild.expectLog(
23-
'error [browser] Uncaught (in promise) Error: Thrown in async (src/index.js:11:0)',
24-
{ posix: true },
25-
);
26-
await rsbuild.expectLog(
27-
'error [browser] Uncaught (in promise) AbortError: signal is aborted without reason (src/index.js:16:0)',
28-
{ posix: true },
29-
);
30-
});
3+
rspackTest(
4+
'should forward browser unhandled rejection logs to terminal',
5+
async ({ dev }) => {
6+
const rsbuild = await dev();
7+
await rsbuild.expectLog('error [browser] Uncaught (in promise) 404');
8+
await rsbuild.expectLog('error [browser] Uncaught (in promise) false');
9+
await rsbuild.expectLog('error [browser] Uncaught (in promise) null');
10+
await rsbuild.expectLog(
11+
'error [browser] Uncaught (in promise) undefined',
12+
);
13+
await rsbuild.expectLog('error [browser] Uncaught (in promise) string');
14+
await rsbuild.expectLog(
15+
'error [browser] Uncaught (in promise) {"name":"Custom","message":"custom message"}',
16+
);
17+
await rsbuild.expectLog(
18+
'error [browser] Uncaught (in promise) Error: reason (src/index.js:7:0)',
19+
{ posix: true },
20+
);
21+
await rsbuild.expectLog(
22+
'error [browser] Uncaught (in promise) AbortError: Aborted',
23+
);
24+
await rsbuild.expectLog(
25+
'error [browser] Uncaught (in promise) Error: Thrown in async (src/index.js:11:0)',
26+
{ posix: true },
27+
);
28+
await rsbuild.expectLog(
29+
'error [browser] Uncaught (in promise) AbortError: signal is aborted without reason (src/index.js:16:0)',
30+
{ posix: true },
31+
);
32+
},
33+
);

packages/core/src/server/socketServer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,11 @@ export class SocketServer {
271271
typeof data === 'string' ? data : data.toString(),
272272
);
273273

274-
if (message.type === 'runtime-error') {
274+
if (
275+
message.type === 'runtime-error' &&
276+
// Do not report browser error when using webpack
277+
this.context.bundlerType === 'rspack'
278+
) {
275279
reportRuntimeError(message, this.context, this.getOutputFileSystem());
276280
}
277281
} catch {}

0 commit comments

Comments
 (0)