1

我刚开始学习 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 错误。我做错了什么?

4

1 回答 1

2

您路径中的反斜杠可能被解释为转义字符?

尝试更改"E:\DartProject\WebClient\web"r"E:\DartProject\WebClient\web",这将指示 Dart 从字面上解释整个字符串。

例如,如果您希望提供服务,您还需要配置“默认文档” 。//index.html

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);
    });
  });
}
于 2014-10-20T22:11:36.833 回答