Skip to content

Instantly share code, notes, and snippets.

@blaZ3
Created July 31, 2020 19:24
Show Gist options
  • Save blaZ3/e34893948c7f5f827b8c2200b2508611 to your computer and use it in GitHub Desktop.
Save blaZ3/e34893948c7f5f827b8c2200b2508611 to your computer and use it in GitHub Desktop.
SSR setup for react app
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