11import 'dart:io' ;
22import 'package:shelf/shelf.dart' ;
33import 'package:shelf/shelf_io.dart' as io;
4+ import 'package:shelf_static/shelf_static.dart' ;
45
56void main () async {
6- final handler =
7- const Pipeline ().addMiddleware (logRequests ()).addHandler (echoRequest);
7+ // Check if index.html exists
8+ String indexFile = 'build/web/index.html' ;
9+ bool indexFileExists = await File ('build/web/index.html' ).exists ();
10+
11+ if (! indexFileExists) {
12+ indexFile = 'README.md' ;
13+ }
14+
15+ final handler = const Pipeline ()
16+ .addMiddleware (logRequests ())
17+ .addMiddleware (_corsHeaders) // Add CORS headers middleware
18+ .addHandler (createStaticHandler ('build/web' , defaultDocument: indexFile));
19+
20+ final handler2 = const Pipeline ()
21+ .addMiddleware (logRequests ())
22+ .addMiddleware (_corsHeaders) // Add CORS headers middleware
23+ .addHandler (echoRequest);
824
925 final server = await io.serve (handler, InternetAddress .anyIPv4, 4001 );
10- print ('Serving at http://${server .address .host }:${server .port }' );
26+ final server2 = await io.serve (handler2, InternetAddress .anyIPv4, 4002 );
27+ print ('Serving static site at http://${server .address .host }:${server .port }' );
28+ print (
29+ 'Serving handling requests at http://${server2 .address .host }:${server2 .port }' );
1130}
1231
1332Response echoRequest (Request request) {
@@ -17,3 +36,15 @@ Response echoRequest(Request request) {
1736 return Response .notFound ('Not found' );
1837 }
1938}
39+
40+ // CORS headers middleware
41+ Middleware _corsHeaders =
42+ createMiddleware (responseHandler: (Response response) {
43+ response = response.change (headers: {
44+ 'Access-Control-Allow-Origin' : '*' ,
45+ 'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS' ,
46+ 'Access-Control-Allow-Headers' :
47+ 'Origin, X-Requested-With, Content-Type, Accept'
48+ });
49+ return response;
50+ });
0 commit comments