2014-10-20 1 views
1

방금 ​​다트를 배우기 시작했습니다. 연습으로 해보고 싶은 것은 단순한 웹 서버로 기본 웹 응용 프로그램을 제공하는 것입니다. 서버를 E:\DartProject\server에 저장하고 웹 클라이언트를 E:\DartProject\WebClient에 저장합니다. 불행히도 나는 webapp을 제공하는 서버를 얻을 수 없습니다. 웹 서버의 코드는 항상 404 오류를 받고 있어요다트를 사용하여 샘플 웹 사이트를 검색

import 'dart:io'; 
import 'package:http_server/http_server.dart' show VirtualDirectory; 


VirtualDirectory virDir = new VirtualDirectory("E:\DartProject\WebClient\web"); 

void main() { 
    HttpServer.bind(InternetAddress.ANY_IP_V4, 80).then((server) { 
    print("Serving at ${server.address}:${server.port}"); 
    server.listen((request) { 
     virDir.serveRequest(request); 
    }); 
    }); 
} 

입니다. 내가 뭘 잘못 했니?

답변

2

경로의 백 슬래시가 이스케이프 문자로 해석 될 수 있습니까?

"E:\DartProject\WebClient\web"r"E:\DartProject\WebClient\web"으로 변경해보십시오. 그러면 Dart가 전체 문자열을 문자 그대로 해석하도록 지시합니다.

예를 들어 //index.html 인 것으로 예상되는 경우 configure a "default document"도 필요합니다.

void directoryHandler(dir, request) { 
    var indexUri = new Uri.file(dir.path).resolve('index.html'); 
    virDir.serveFile(new File(indexUri.toFilePath()), request); 
} 

void main() { 
    virDir = new VirtualDirectory(r"E:\DartProject\WebClient\web") 
    ..allowDirectoryListing = true 
    ..directoryHandler = directoryHandler; 

    HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8080).then((server) { 
    print("Serving at ${server.address}:${server.port}"); 
    server.listen((request) { 
     virDir.serveRequest(request); 
    }); 
    }); 
} 
+0

감사합니다. @DannyTuppeny. 불행히도 여전히 작동하지 않습니다. virDir.serveRequest (request); 아래에'print ('test')'를 추가하고 새로 고침을 클릭 할 때마다 테스트를 작성하지만 웹 클라이언트를 제공하지 않습니다. 다른 아이디어? – Lukasz

+0

파일에 일부를 제공하거나 기본값 (예 : index.htm)을 기본으로 사용하겠습니까? –

+0

@Lukasz 잘못되었을 수도 있다고 가정하고'/ index.html'에'/'매핑하는 방법에 대한 업데이트 된 답변을보십시오. –

관련 문제