dart - 如何从Dart书架式静态文件处理程序为聚合物应用程序提供服务?

标签 dart dart-polymer dart-shelf

我正在尝试使用货架静态服务器为聚合物应用程序提供服务。我创建下一个结构:


    polymerapp
      - pubspec.yml
      - bin
          - server.dart
      - web
          - index.html
      - lib
          - main_app.dart
          - main_app.html

Inside server.dart I put this code:

import 'dart:io' show Platform;
import 'dart:async' show runZoned;
import 'package:path/path.dart' show join, dirname;
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_static/shelf_static.dart';

void main() {
  // Assumes the server lives in bin/ and that `pub build` ran
  var pathToBuild = join(dirname(Platform.script.toFilePath()),
      '..', 'web');

  var handler = createStaticHandler(pathToBuild,
      defaultDocument: 'index.html');

  var portEnv = Platform.environment['PORT'];
  var port = portEnv == null ? 9999 : int.parse(portEnv);

  runZoned(() {
    io.serve(handler, '0.0.0.0', port);
    print("Serving $pathToBuild on port $port");
  },
  onError: (e, stackTrace) => print('Oh noes! $e $stackTrace'));
}

其余的是由dart编辑器创建的模板聚合物应用程序。

问题是,当我尝试从浏览器访问localhost:9999时,它显示了下一个错误:

加载资源失败:服务器响应状态为404(未找到)
http:// localhost:9999 / packages / paper_elements / roboto.html
加载资源失败:服务器响应状态为404(未找到)
http:// localhost:9999 / packages / polymertest / main_app.html
加载资源失败:服务器响应状态为404(未找到)
http:// localhost:9999 / packages / polymer / init.dart
加载文件时发生错误:package:polymer / init.dart

我想这样做是为了加快开发速度。在那种情况下,我不需要每次进行更改时都构建Polymer-Dart应用程序。

最佳答案

您可以将serveFilesOutsidePath: true传递给createStaticHandler()

 var handler = createStaticHandler(pathToBuild,
   defaultDocument: 'index.html',
   serveFilesOutsidePath: true);

另外,在开发过程中,您可以将pub serveshelf_proxy一起用于增量构建。有关示例,请参见here

关于dart - 如何从Dart书架式静态文件处理程序为聚合物应用程序提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465792/

相关文章:

dart - 如何从控制台通过 "Run in Dartium"运行聚合物应用程序?

dart - 如何使用 dart2js 将 Dart Polymer 应用程序部署到 Javascript

dart - 在 Dart 中分离级联

git - 如何从 GitHub 获取 pub 作为依赖

flutter - 找不到pubspec.yaml文件。 flutter 朔迷离

dart - 使用pub作为生产网络服务器正确吗?

dart - 如何在不同的屏幕中通过不同的类发送数据

polymer - 如何围绕我的 View 模型构建我的 Polymer SPA 和核心页面?