App Engine + Polymer.dart单页web应用程序路由与hashbang

时间:2015-05-20 10:01:29

标签: dart dart-polymer

我正在使用polymer.dart创建单页网络应用,并希望在Google应用引擎上部署它。我在路由时堆叠

我为我的服务器使用redstone和shelf_static,为我的客户端使用route_hierarchical。

仓/ server.dart

import 'package:appengine/appengine.dart';

import 'package:redstone/server.dart' as app;
import 'package:shelf_static/shelf_static.dart';

main() {
  var staticHandler = createStaticHandler("web", 
      defaultDocument: "index.html", serveFilesOutsidePath: true);

  app.setShelfHandler(staticHandler);

  app.setupConsoleLog();
  app.setUp();

  runAppEngine(app.handleRequest);
}

LIB / main_app / main_app.dart

import 'package:polymer/polymer.dart';

import 'package:route_hierarchical/client.dart';

@CustomTag('main-app')
class MainApp extends PolymerElement {
  final Router router = new Router();

  MainApp.created() : super.created();

  ready() {
    print("Main App: ready()");

    router.root
      ..addRoute(name: 'home', path: '/', enter: showHome, defaultRoute: true)
      ..addRoute(name: 'login', path: '/#!/login', enter: showLogin);

    router.listen();
  }

  void showHome(RouteEvent event) {
    print("Main App: showHome()");
  }

  void showLogin(RouteEvent event) {
    print("Main App: showLogin()");
  }
}

LIB / main_app / main_app.html

幅/ index.html中

  • 主页:localhost:8080 /
  • 登录:localhost:8080 /#!/ login

如果我使用" pub serve"在本地运行应用程序命令,它的工作原理。
但是,如果我使用" gcloud预览应用程序运行app.yaml"命令,登录路由不起作用并记录错误。
http://prntscr.com/77adww

1 个答案:

答案 0 :(得分:1)

我终于搞定了!问题是,我正在运行未转换的输出,就像@Jake MacDonald说的那样。这是怎么回事。

替换

var staticHandler = createStaticHandler("web", defaultDocument: "index.html", serveFilesOutsidePath: true);

var staticHandler = createStaticHandler("build/web", defaultDocument: "index.html", serveFilesOutsidePath: true);