Created
July 31, 2020 19:24
-
-
Save blaZ3/e34893948c7f5f827b8c2200b2508611 to your computer and use it in GitHub Desktop.
SSR setup for react app
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Deps | |
## yarn add express | |
## yarn add @babel/preset-env @babel/preset-react @babel/register ignore-styles | |
## Build react app | |
## yarn build | |
## Add file | |
## server/server.js | |
import express from 'express' | |
import fs from 'fs' | |
import path from 'path' | |
import React from 'react' | |
import ReactDomServer from 'react-dom/server' | |
import App from '../src/App' | |
const app = express() | |
app.use('^/$', (req, res, next) => { | |
fs.readFile(path.resolve('./build/index.html'), 'utf-8', (err, data) => { | |
if (err) { | |
console.log(err) | |
return res.status(500).send("error!") | |
} | |
return res.send(data.replace('<div id="root"></div>', `<div id="root">${ReactDomServer.renderToString(<App />)}</div>`)) | |
}) | |
}) | |
app.use(express.static(path.resolve(__dirname, '..', 'build'))) | |
app.listen(8080, () => { | |
console.log("SSR server running on 8080") | |
}); | |
## Add file | |
## server/index.js | |
require('ignore-styles') | |
require('@babel/register')({ | |
ignore: [/(node_modules)/], | |
presets: ['@babel/preset-env', '@babel/preset-react'] | |
}) | |
require('./server') | |
## Add run script to package.json | |
## "start:ssr": "node server/index.js" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment