From ff2021b3aabdbca6550f0004575e6d185b21b5d7 Mon Sep 17 00:00:00 2001 From: sven3270350 Date: Mon, 15 May 2017 21:03:18 +0100 Subject: [PATCH] Put console.stack() behind a react vendor prefix (#2164) Matches what we did in https://github.com/facebook/react/pull/9679 --- .../src/effects/proxyConsole.js | 17 ++++++++++++----- .../react-error-overlay/src/utils/warnings.js | 6 +++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/react-error-overlay/src/effects/proxyConsole.js b/packages/react-error-overlay/src/effects/proxyConsole.js index 062055e..9fef4b3 100644 --- a/packages/react-error-overlay/src/effects/proxyConsole.js +++ b/packages/react-error-overlay/src/effects/proxyConsole.js @@ -3,24 +3,31 @@ type ReactFrame = { fileName: string | null, lineNumber: number | null, - functionName: string | null, + name: string | null, }; const reactFrameStack: Array = []; export type { ReactFrame }; +// This is a stripped down barebones version of this proposal: +// https://gist.github.com/sebmarkbage/bdefa100f19345229d526d0fdd22830f +// We're implementing just enough to get the invalid element type warnings +// to display the component stack in React 15.6+: +// https://github.com/facebook/react/pull/9679 +/// TODO: a more comprehensive implementation. + const registerReactStack = () => { // $FlowFixMe - console.stack = frames => reactFrameStack.push(frames); + console.reactStack = frames => reactFrameStack.push(frames); // $FlowFixMe - console.stackEnd = frames => reactFrameStack.pop(); + console.reactStackEnd = frames => reactFrameStack.pop(); }; const unregisterReactStack = () => { // $FlowFixMe - console.stack = undefined; + console.reactStack = undefined; // $FlowFixMe - console.stackEnd = undefined; + console.reactStackEnd = undefined; }; type ConsoleProxyCallback = (message: string, frames: ReactFrame[]) => void; diff --git a/packages/react-error-overlay/src/utils/warnings.js b/packages/react-error-overlay/src/utils/warnings.js index d714eb4..87b792b 100644 --- a/packages/react-error-overlay/src/utils/warnings.js +++ b/packages/react-error-overlay/src/utils/warnings.js @@ -33,9 +33,9 @@ function massage( lastFilename = fileName; lastLineNumber = lineNumber; - let { functionName } = frames[index]; - functionName = functionName || '(anonymous function)'; - stack += `in ${functionName} (at ${fileName}:${lineNumber})\n`; + let { name } = frames[index]; + name = name || '(anonymous function)'; + stack += `in ${name} (at ${fileName}:${lineNumber})\n`; } return { message, stack };