Skip to content

Commit 5b98656

Browse files
authored
fix: use define property to overwrite console, close facebook#19099 (facebook#19123)
* fix: use define property to overwrite console, close facebook#19099 * fix: lint error
1 parent 6ba25b9 commit 5b98656

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

packages/shared/ConsolePatchingDev.js

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,20 @@ export function disableLogs(): void {
2929
prevInfo = console.info;
3030
prevWarn = console.warn;
3131
prevError = console.error;
32+
// https://github.com/facebook/react/issues/19099
33+
const props = {
34+
configurable: true,
35+
enumerable: true,
36+
value: disabledLog,
37+
writable: true,
38+
};
3239
// $FlowFixMe Flow thinks console is immutable.
33-
console.log = console.info = console.warn = console.error = disabledLog;
40+
Object.defineProperties(console, {
41+
info: props,
42+
log: props,
43+
warn: props,
44+
error: props,
45+
});
3446
/* eslint-enable react-internal/no-production-logging */
3547
}
3648
disabledDepth++;
@@ -42,14 +54,18 @@ export function reenableLogs(): void {
4254
disabledDepth--;
4355
if (disabledDepth === 0) {
4456
/* eslint-disable react-internal/no-production-logging */
57+
const props = {
58+
configurable: true,
59+
enumerable: true,
60+
writable: true,
61+
};
4562
// $FlowFixMe Flow thinks console is immutable.
46-
console.log = prevLog;
47-
// $FlowFixMe Flow thinks console is immutable.
48-
console.info = prevInfo;
49-
// $FlowFixMe Flow thinks console is immutable.
50-
console.warn = prevWarn;
51-
// $FlowFixMe Flow thinks console is immutable.
52-
console.error = prevError;
63+
Object.defineProperties(console, {
64+
log: {...props, value: prevLog},
65+
info: {...props, value: prevInfo},
66+
warn: {...props, value: prevWarn},
67+
error: {...props, value: prevError},
68+
});
5369
/* eslint-enable react-internal/no-production-logging */
5470
}
5571
if (disabledDepth < 0) {

0 commit comments

Comments
 (0)