我有一个我主要在AngularDart v0.12中构建的应用程序,它正在JS中构建并运行得很好,但在升级到AngularDart v1.0并考虑到重大更改之后,它无法运行现在JS在构建它之后没有问题。尝试在Chrome中运行时,控制台会出现以下错误:
Uncaught Type "QueryService" not found in generated typeFactory maps
以下是我的pubspec.yaml配置:
name: ###
author: ###
description: ###
homepage: ###
transformers:
- angular:
dart_sdk: "C:/dart/dart-sdk"
suppressWarnings: false
- $dart2js:
suppressWarnings: false
minify: false
checked: true
dependencies:
angular: any
angular_dart_ui_bootstrap: any
bootjack: any
browser: any
chrome: any
di: any
dquery: any
google_oauth2_client: any
http_server: any
inject: any
js: any
logging: any
mock: any
mongo_dart: any
route: any
shadow_dom: any
shelf: any
shelf_route: any
shelf_web_socket: any
sqljocky: any
unittest: any
以下是我的模块类:
class AppModule extends Module{
AppModule(){
/*
* Services, Routers, and Controller
*/
bind(QueryService);
bind(RoutingService);
bind(RouteInitializerFn, toValue: initRoutes);
bind(NgRoutingUsePushState, toValue: new NgRoutingUsePushState.value(false));
/*
* Components
*/
bind(Login);
bind(Dashboard);
bind(SideNav);
}
}
以下是QueryService类:
@Injectable()
class QueryService{
Http _http;
Scope _scope;
QueryService(Http this._http, Scope this._scope){
someFunction();
}
}
重申一下,这个应用程序在使用DartVM运行时工作正常,但似乎不想在内置到JS时注入QueryService。
另外,我知道这可能与this问题非常相似,但解决方案似乎对我的情况没有任何影响,而且AngularDart版本更新。
答案 0 :(得分:1)
@Injectable注释应该触发工厂的生成。
如果不是你可能没有运行角度变压器?
你pubspec应该列出这个变换器,即:
name: myApp
dependencies:
angular: ">=1.0.0 <2.0.0"
transformers:
- angular
答案 1 :(得分:1)
显然我是通过main.dart文件中的相对路径直接导入我的应用程序库,而不是将其作为包导入。这导致了库的重复声明,这必然会给变换器带来一些问题。我基本上只需要从
更改main.dart文件的导入import '../library/src/app.dart';
到
import 'package:myPackage/app.dart'