Fix Flight Prod Fixture (#20382)
* Don't use async/await Babel transpilation fails for some reason in prod. * Set up production runner command Uses python because meh. Just to show it's static. * Use build folder in prod
Sebastian Markbåge committed
Dec 4, 2020 at 21:00 UTC
0db61a08befe6406aa93568708224d1cca2aff7d
2 files changed
+22
-13
fixtures/flight/package.json
+3
-1
@@ -68,7 +68,9 @@
68
"start": "concurrently \"npm run start:server\" \"npm run start:client\"",
69
"start:client": "node scripts/start.js",
70
"start:server": "NODE_ENV=development node --experimental-loader ./loader/index.js --conditions=react-server server",
71
- "start:prod": "node scripts/build.js && NODE_ENV=production node server",
71
+ "start:prod": "node scripts/build.js && concurrently \"npm run start:prod-server\" \"npm run start:prod-client\"",
72
+ "start:prod-client": "cd ./build && python -m SimpleHTTPServer 3000",
73
+ "start:prod-server": "NODE_ENV=production node --experimental-loader ./loader/index.js --conditions=react-server server",
74
"build": "node scripts/build.js",
75
"test": "node scripts/test.js --env=jsdom"
76
},
fixtures/flight/server/handler.server.js
+19
-12
@@ -1,20 +1,27 @@
1
'use strict';
2
3
import {pipeToNodeWritable} from 'react-transport-dom-webpack/server';
4
-import {readFileSync} from 'fs';
4
+import {readFile} from 'fs';
5
import {resolve} from 'path';
6
import * as React from 'react';
7
8
-module.exports = async function(req, res) {
9
- const m = await import('../src/App.server.js');
8
+module.exports = function(req, res) {
9
// const m = require('../src/App.server.js');
11
- const App = m.default.default || m.default;
12
- res.setHeader('Access-Control-Allow-Origin', '*');
13
- const moduleMap = JSON.parse(
14
- readFileSync(
15
- resolve(__dirname, '../dist/react-transport-manifest.json'),
16
- 'utf8'
17
- )
18
- );
19
- pipeToNodeWritable(<App />, res, moduleMap);
10
+ import('../src/App.server.js').then(m => {
11
+ const dist = process.env.NODE_ENV === 'development' ? 'dist' : 'build';
12
+ readFile(
13
+ resolve(__dirname, `../${dist}/react-transport-manifest.json`),
14
+ 'utf8',
15
+ (err, data) => {
16
+ if (err) {
17
+ throw err;
18
+ }
19
+
20
+ const App = m.default.default || m.default;
21
+ res.setHeader('Access-Control-Allow-Origin', '*');
22
+ const moduleMap = JSON.parse(data);
23
+ pipeToNodeWritable(<App />, res, moduleMap);
24
+ }
25
+ );
26
+ });
27
};