1- import { createServer } from 'http' ;
1+ import { createServer , IncomingMessage , ServerResponse } from 'http' ;
22import { createFactory } from 'react' ;
33import { renderToNodeStream } from 'react-dom/server' ;
44import { createReadStream } from 'fs' ;
@@ -9,8 +9,6 @@ import { control } from './cache-control';
99import {
1010 faviconUrl ,
1111 stylesUrl ,
12- reactUrl ,
13- reactDomUrl ,
1412 browserUrl ,
1513 browserMapUrl ,
1614 propsUrl ,
@@ -23,8 +21,9 @@ console.log('Production optimization enabled? ', isProd);
2321const AppFactory = createFactory ( App ) ;
2422const PORT = process . env . PORT || 3007 ;
2523const suffix = isProd ? '.production.min.js' : '.development.js' ;
24+ const reactVersion = require ( '../package.json' ) . dependencies . react ;
2625
27- createServer ( async ( req , res ) => {
26+ export default async function handler ( req : IncomingMessage , res : ServerResponse ) {
2827 let { httpVersion, method, url } = req ;
2928 console . log ( `${ httpVersion } ${ method } ${ url } ` ) ;
3029 if ( ! url || url === '/' ) {
@@ -52,8 +51,8 @@ createServer(async (req, res) => {
5251 ) ;
5352 stream . on ( 'end' , ( ) => {
5453 res . end ( `</div>
55- <script src="${ reactUrl } "></script>
56- <script src="${ reactDomUrl } "></script>
54+ <script src="https://unpkg.com/react@ ${ reactVersion } /umd/react ${ suffix } "></script>
55+ <script src="https://unpkg.com/react-dom@ ${ reactVersion } /umd/react-dom ${ suffix } "></script>
5756 <script src="${ browserUrl } "></script>
5857 </body>
5958 </html>` ) ;
@@ -62,12 +61,6 @@ createServer(async (req, res) => {
6261 res . setHeader ( 'Content-Type' , lookup ( url ) ) ;
6362 res . setHeader ( 'Cache-Control' , control ( isProd , 0 ) ) ;
6463 res . end ( JSON . stringify ( fetchProps ( ) ) ) ;
65- } else if ( url === reactUrl || url === reactDomUrl ) {
66- res . setHeader ( 'Content-Type' , lookup ( url ) ) ;
67- res . setHeader ( 'Cache-Control' , control ( isProd , 7 ) ) ;
68- const name = url . replace ( '.js' , '' ) ;
69- const file = `./node_modules${ name } /umd${ name } ${ suffix } ` ;
70- createReadStream ( file ) . pipe ( res ) ;
7164 } else if ( url === stylesUrl ) {
7265 res . setHeader ( 'Content-Type' , lookup ( url ) ) ;
7366 res . setHeader ( 'Cache-Control' , control ( isProd , 7 ) ) ;
@@ -93,6 +86,10 @@ createServer(async (req, res) => {
9386 res . statusCode = 500 ;
9487 res . end ( '500 Internal Error' ) ;
9588 }
96- } ) . listen ( PORT , ( ) => {
97- console . log ( `Listening on ${ PORT } ...` ) ;
98- } ) ;
89+ }
90+
91+ if ( ! isProd ) {
92+ createServer ( handler ) . listen ( PORT , ( ) => {
93+ console . log ( `Listening on ${ PORT } ...` ) ;
94+ } ) ;
95+ }
0 commit comments