设置dart-editor服务器响应

时间:2014-08-12 10:10:26

标签: dart dart-editor dart-pub

我的apache服务器设置为使用index.html响应任何请求。这背后的想法是让我们正在创建的Web应用程序处理路由。 dart-editor测试环境默认不执行此操作。

相反,当我转到http://127.0.0.1.8080/something/that/does/not/exisit时,它会返回404.我希望它能够回复index.html并让应用程序处理路由。

是否可以为飞镖测试环境设置此行为?

1 个答案:

答案 0 :(得分:2)

建议的方法是使用充当代理的自定义服务器转发到pub serve

另见

代码(从链接问题复制)

Future proxyToPub(HttpRequest request, String path) {
    const RESPONSE_HEADERS = const [
        HttpHeaders.CONTENT_LENGTH,
        HttpHeaders.CONTENT_TYPE ];

    var uri = pubServeUrl.resolve(path);
    return client.openUrl(request.method, uri)
        .then((proxyRequest) {
          proxyRequest.headers.removeAll(HttpHeaders.ACCEPT_ENCODING);
          return proxyRequest.close();
        })
        .then((proxyResponse) {
          proxyResponse.headers.forEach((name, values) {
            if (RESPONSE_HEADERS.contains(name)) {
              request.response.headers.set(name, values);
            }
          });
          request.response.statusCode = proxyResponse.statusCode;
          request.response.reasonPhrase = proxyResponse.reasonPhrase;
          return proxyResponse.pipe(request.response);
        })
        .catchError((e) {
          print("Unable to connect to 'pub serve' for '${request.uri}': $e");
          var error = new AssetError(
              "Unable to connect to 'pub serve' for '${request.uri}': $e");
          return new Future.error(error);
        });
  }

我使用route_hierarchical包的方式与启用或禁用usePushState的方式相同。这样我可以使用URL片段进行开发,使用pushState进行部署 见https://stackoverflow.com/a/25256858/217408 或两个相似(简单)的例子,其中一个使用usePushState false而另一个true https://github.com/bwu-dart/bwu_polymer_routing