我刚刚开始学习dart,我想要做的就是通过一个简单的网络服务器来提供默认的Web应用程序。我将服务器存储在E:\DartProject\server
,将Web客户端存储在E:\DartProject\WebClient
。不幸的是我无法让服务器服务于webapp。网络服务器的代码是
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);
});
});
}
我总是得到404错误。我做错了什么?
答案 0 :(得分: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);
});
});
}