Skip to content

Commit 1ca1f1f

Browse files
committed
Run console.createTask during SSR when available
This is rarely used but it does allow seeing component stacks when inspecting the Node.js server running Fizz using --inspect and the Chrome DevTools.
1 parent 2e72ea8 commit 1ca1f1f

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

fixtures/flight/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"predev": "cp -r ../../build/oss-experimental/* ./node_modules/",
7171
"prebuild": "cp -r ../../build/oss-experimental/* ./node_modules/",
7272
"dev": "concurrently \"npm run dev:region\" \"npm run dev:global\"",
73-
"dev:global": "NODE_ENV=development BUILD_PATH=dist node --experimental-loader ./loader/global.js server/global",
73+
"dev:global": "NODE_ENV=development BUILD_PATH=dist node --experimental-loader ./loader/global.js --inspect server/global",
7474
"dev:region": "NODE_ENV=development BUILD_PATH=dist nodemon --watch src --watch dist -- --enable-source-maps --experimental-loader ./loader/region.js --conditions=react-server server/region",
7575
"start": "node scripts/build.js && concurrently \"npm run start:region\" \"npm run start:global\"",
7676
"start:global": "NODE_ENV=production node --experimental-loader ./loader/global.js server/global",

packages/react-server/src/ReactFizzServer.js

+39
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ import {
150150
disableDefaultPropsExceptForClasses,
151151
enableAsyncIterableChildren,
152152
disableStringRefs,
153+
enableOwnerStacks,
153154
} from 'shared/ReactFeatureFlags';
154155

155156
import assign from 'shared/assign';
@@ -2372,6 +2373,27 @@ function renderNodeDestructive(
23722373
key == null ? (childIndex === -1 ? 0 : childIndex) : key;
23732374
const keyPath = [task.keyPath, name, keyOrIndex];
23742375
if (task.replay !== null) {
2376+
if (__DEV__ && enableOwnerStacks) {
2377+
const debugTask: null | ConsoleTask = element._debugTask;
2378+
if (debugTask) {
2379+
debugTask.run(
2380+
replayElement.bind(
2381+
null,
2382+
request,
2383+
task,
2384+
keyPath,
2385+
name,
2386+
keyOrIndex,
2387+
childIndex,
2388+
type,
2389+
props,
2390+
ref,
2391+
task.replay,
2392+
),
2393+
);
2394+
return;
2395+
}
2396+
}
23752397
replayElement(
23762398
request,
23772399
task,
@@ -2388,6 +2410,23 @@ function renderNodeDestructive(
23882410
// prelude and skip it during the replay.
23892411
} else {
23902412
// We're doing a plain render.
2413+
if (__DEV__ && enableOwnerStacks) {
2414+
const debugTask: null | ConsoleTask = element._debugTask;
2415+
if (debugTask) {
2416+
debugTask.run(
2417+
renderElement.bind(
2418+
null,
2419+
request,
2420+
task,
2421+
keyPath,
2422+
type,
2423+
props,
2424+
ref,
2425+
),
2426+
);
2427+
return;
2428+
}
2429+
}
23912430
renderElement(request, task, keyPath, type, props, ref);
23922431
}
23932432
return;

0 commit comments

Comments
 (0)