1
1
import 'dart:io' ;
2
2
import 'package:shelf/shelf.dart' ;
3
3
import 'package:shelf/shelf_io.dart' as io;
4
+ import 'package:shelf_static/shelf_static.dart' ;
4
5
5
6
void 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);
8
24
9
25
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 }' );
11
30
}
12
31
13
32
Response echoRequest (Request request) {
@@ -17,3 +36,15 @@ Response echoRequest(Request request) {
17
36
return Response .notFound ('Not found' );
18
37
}
19
38
}
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