简体   繁体   中英

DartEditor Pub Build google app engine

I've coded a webapp in Dart. On server side I'm using DartForce MVC framework and on client side I'm using AngularDart. If I build in DartEditor I received this error

[Info from Dart2JS]:
Compiling dartrest|web/main.dart...
[Dart2JS on dartrest|web/main.dart]:
1 warning(s) suppressed in package:route_hierarchical.
[Dart2JS on dartrest|web/main.dart]:
1 warning(s) suppressed in package:angular.
[Info from Dart2JS]:
Took 0:00:14.278144 to compile dartrest|web/main.dart.
[Info from Dart2JS]:
Compiling dartrest|bin/server.dart...
[Dart2JS]:
bin/server.dart:


****************************************************************
* WARNING: dart:mirrors support in dart2js is experimental,
*          and not recommended.
*          This implementation of mirrors is incomplete,
*          and often greatly increases the size of the generated
*          JavaScript code.
*
* Your app imports dart:mirrors via:
*   server.dart => package:forcemvc => dart:mirrors
*   server.dart => package:forcemvc => package:mustache4dart => dart:mirrors
*   server.dart => package:forcemvc => package:forcemirrors => dart:mirrors
*   server.dart => package:forcemvc => package:wired => dart:mirrors
*   server.dart => package:forcemvc => package:wired => package:forcemirrors => dart:mirrors
*   server.dart => package:mustache4dart => dart:mirrors
*   server.dart => package:appengine => package:gcloud => package:http => dart:mirrors
*   server.dart => package:appengine => package:gcloud => package:googleapis => package:http => dart:mirrors
*   server.dart => package:appengine => package:gcloud => dart:mirrors
*   server.dart => package:appengine => package:http => dart:mirrors
*   server.dart => package:appengine => package:googleapis_auth => package:http => dart:mirrors
*
* Starting with Dart 1.9, you must use the
* --enable-experimental-mirrors command-line flag to opt-in.
* You can begin using this flag now if mirrors support is critical.
*
* To learn what to do next, please visit:
*    http://dartlang.org/dart2js-reflection
****************************************************************


[Error from Dart2JS on dartrest|bin/server.dart]:
packages/forcemvc/server/serving_files.dart:46:71:
Experimental language feature 'async/await' is not supported.
  Future serveFile(HttpRequest request, String root, String fileName) async {
                                                                      ^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/forcemvc/server/web_application.dart:163:68:
Experimental language feature 'async/await' is not supported.
  Future _send_template(HttpRequest req, Model model, String view) async {
                                                                   ^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/forcemvc/render/view_render.dart:36:45:
Experimental language feature 'async/await' is not supported.
  Future<String> render(String view, model) async {
                                            ^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/forcemvc/render/view_render.dart:64:46:
Experimental language feature 'async/await' is not supported.
  Future<String> _readFile(File file, model) async {
                                             ^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/gcloud/service_scope.dart:80:33:
Symbol literal '#_gcloud.service_scope' is currently unsupported by dart2js.
const Symbol _ServiceScopeKey = #_gcloud.service_scope;
                                ^^^^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/users.dart:39:15:
Symbol literal '#_appengine.users' is currently unsupported by dart2js.
  ss.register(#_appengine.users, service);
              ^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/logging.dart:61:15:
Symbol literal '#_appengine.logging' is currently unsupported by dart2js.
  ss.register(#_appengine.logging, service);
              ^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/gcloud/http.dart:13:40:
Symbol literal '#_gcloud.http' is currently unsupported by dart2js.
const Symbol _authenticatedClientKey = #_gcloud.http;
                                       ^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/memcache.dart:19:15:
Symbol literal '#_appengine.memcache' is currently unsupported by dart2js.
  ss.register(#_appengine.memcache, service);
              ^^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/modules.dart:77:15:
Symbol literal '#_appengine.modules' is currently unsupported by dart2js.
  ss.register(#_appengine.modules, service);
              ^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/gcloud/storage.dart:67:28:
Symbol literal '#_gcloud.storage' is currently unsupported by dart2js.
const Symbol _storageKey = #_gcloud.storage;
                           ^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/gcloud/datastore.dart:17:30:
Symbol literal '#_gcloud.datastore' is currently unsupported by dart2js.
const Symbol _datastoreKey = #_gcloud.datastore;
                             ^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/gcloud/db.dart:21:23:
Symbol literal '#_gcloud.db' is currently unsupported by dart2js.
const Symbol _dbKey = #_gcloud.db;
                      ^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/appengine.dart:26:35:
Symbol literal '#_appengine.context' is currently unsupported by dart2js.
const Symbol _APPENGINE_CONTEXT = #_appengine.context;
                                  ^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/forcemvc/server/web_application.dart:92:55:
Experimental language feature 'async/await' is not supported.
  Future _resolveStatic(HttpRequest req, String name) async {
                                                      ^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/users.dart:48:42:
Symbol literal '#_appengine.users' is currently unsupported by dart2js.
UserService get userService => ss.lookup(#_appengine.users);
                                         ^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/memcache.dart:28:43:
Symbol literal '#_appengine.memcache' is currently unsupported by dart2js.
Memcache get memcacheService => ss.lookup(#_appengine.memcache);
                                          ^^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/modules.dart:86:48:
Symbol literal '#_appengine.modules' is currently unsupported by dart2js.
ModulesService get modulesService => ss.lookup(#_appengine.modules);
                                               ^^^^^^^^^^^^^^^^^^^
[Error from Dart2JS on dartrest|bin/server.dart]:
packages/appengine/api/logging.dart:70:41:
Symbol literal '#_appengine.logging' is currently unsupported by dart2js.
Logging get loggingService => ss.lookup(#_appengine.logging);
                                        ^^^^^^^^^^^^^^^^^^^
[Info from Dart2JS]:
Took 0:00:02.513900 to compile dartrest|bin/server.dart.
Build failed.

If I build same project into shell with

pub build

into my project folder and this produce an incomplete build: only web folder is generated.

This is my pubspec.yaml

name: dartrest
dependencies:
  angular: 1.0.0
  appengine: '>=0.2.4 <0.3.0'
  browser: any
  forcemvc:
    git: 'https://github.com/ForceUniverse/dart-forcemvc'
  http_server: '>=0.9.3 <0.10.0'
  logging: '>=0.9.0 <0.10.0'
  web_components: '>=0.9.0 <1.0.0'
dev_dependencies:
  mock: '>=0.11.0+2 <0.12.0'
  unittest: '>=0.11.0+5 <0.12.0'
transformers:
- angular:
    dart_sdk: /usr/lib/dart
    html_files:
    - lib/component/custom.html

Any ideas?

Seems to be a issue with DartEditor to pass specific folders to the pub build command. Can you please create a bug report at http://dartbug.com/new .

It is fine if only the build/web folder was created.
The server code can be deployed as is. There is an experimental dart2dart option (see Run Dart WebApp on Apache Server ) but for the way development for Managed VMs is currently set up, deploying the bin directory without building is just fine (default by gcloud preview app run app.yaml ).

Update

Because transformers can be important for server side code as well it makes sense to run pub build web bin but just the Dart2JS transformer doesn't make sense for bin.

A workaround is to add this transformer configuration

transformers:
- $dart2js:
    $exclude: bin/**.dart

to your pubspec.yaml file.

As far as I know the $dart2js transformer should be the last in the list if you have others (like angular , di , smoke , ...)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM