Skip to content

Commit

Permalink
Fix for SSR2 fixture not working locally (#24237)
Browse files Browse the repository at this point in the history
* SS2 fixture not working locally fix

* Fix prettier issue

* prettier excess line fix

* Update render.js

* Update README.md

Co-authored-by: dan <dan.abramov@gmail.com>
  • Loading branch information
2 people authored and rickhanlonii committed Apr 14, 2022
1 parent 36fb361 commit c5a6ba1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
30 changes: 30 additions & 0 deletions fixtures/ssr2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SSR Fixtures

A set of test cases for quickly identifying issues with server-side rendering.

## Setup

To reference a local build of React, first run `npm run build` at the root
of the React project. Then:

```
cd fixtures/ssr2
yarn
yarn start
```

The `start` command runs a webpack dev server and a server-side rendering server in development mode with hot reloading.

**Note: whenever you make changes to React and rebuild it, you need to re-run `yarn` in this folder:**

```
yarn
```

If you want to try the production mode instead run:

```
yarn start:prod
```

This will pre-build all static resources and then start a server-side rendering HTTP server that hosts the React app and service the static resources (without hot reloading).
1 change: 0 additions & 1 deletion fixtures/ssr2/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ webpack(
console.error(err.details);
}
process.exit(1);
return;
}
const info = stats.toJson();
if (stats.hasErrors()) {
Expand Down
8 changes: 6 additions & 2 deletions fixtures/ssr2/server/render.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ let assets = {
};

module.exports = function render(url, res) {
const data = createServerData();
// This is how you would wire it up previously:
//
// res.send(
Expand All @@ -36,14 +37,17 @@ module.exports = function render(url, res) {
console.error('Fatal', error);
});
let didError = false;
const data = createServerData();
const {pipe, abort} = renderToPipeableStream(
<DataProvider data={data}>
<App assets={assets} />
</DataProvider>,
{
bootstrapScripts: [assets['main.js']],
onCompleteShell() {
onAllReady() {
// Full completion.
// You can use this for SSG or crawlers.
},
onShellReady() {
// If something errored before we started streaming, we set the error code appropriately.
res.statusCode = didError ? 500 : 200;
res.setHeader('Content-type', 'text/html');
Expand Down

0 comments on commit c5a6ba1

Please sign in to comment.