无法解析 xyz 的所有参数:(?, ?) 自 Angular2 CLI 升级以来

Posted

技术标签:

【中文标题】无法解析 xyz 的所有参数:(?, ?) 自 Angular2 CLI 升级以来【英文标题】:Can't resolve all parameters for xyz: (?, ?) since Angular2 CLI Upgrade 【发布时间】:2017-05-30 21:46:36 【问题描述】:

我将运行良好的 Angular2 项目从 Beta .21 升级到了 beta .25.5。我已修复所有错误,以便在使用 AOT 或非 AOT(例如 ng serve)时不会出现错误

现在,当浏览器加载时,我的许多服务在运行时都会出现此错误,它会影响该文件的所有参数服务。

Can't resolve all parameters for *servicename*: (?)     

首先我删除了我正在使用的桶并检查了循环依赖。

然后我将它们全部移动到 App.module 中的 Providers 数组中,并检查所有服务是否都有 @Injectable()。 摆脱错误的唯一方法是使用 Inject() 方法,例如:

import  Injectable, Optional, SkipSelf, Inject  from '@angular/core';
import  Subject  from 'rxjs/Subject';

export interface SpinnerState 
    show: boolean;


@Injectable()
export class SpinnerService 
    private spinnerSubject = new Subject<SpinnerState>();

    spinnerState = this.spinnerSubject.asObservable();

    constructor( @Optional() @SkipSelf() @Inject(SpinnerService) prior: SpinnerService) 

这修复了错误,但后来我在第 3 方库中遇到了这个错误。如何调试它以找出问题的根本原因?

谢谢

nativeError : Error: Can't resolve all parameters for Logger: (?). at SyntaxError.BaseError [as constructor] (http://localhost:4200/vendor.bundle.js:134335:27) [&lt;r

这就是我的 App.Module 的外观:

 providers: [
        
            provide: AuthHttp,
            useFactory: authHttpServiceFactory,
            deps: [Http, RequestOptions],
        ,
        [Logger],
        LoggerService,
        SpinnerService,
        DataBreezeService,
        ProfileService,
        AuthService,
        AuthGuardService,
        CanDeactivateGuardService,

我也有这些:


  "emitDecoratorMetadata": true,
  "experimentalDecorators": true

(如前所述,我的项目在升级之前运行良好 - 我在发行说明中看不到任何明显的内容)。

更新 我一直在评论有问题的服务并从构造函数中删除参数,每次它只是移动到下一个服务 - 即。这里有更高级别的错误。现在我也在组件上遇到 404 错误,例如。

我不明白为什么——例如,404 订阅组件真的很简单:我什至尝试添加“moduleId: 'module.id'”,但这没有任何区别:

import  Component  from '@angular/core';

@Component(
    selector: 'app-subscribe',
    templateUrl: './subscribe.component.html',
    styleUrls: ['./subscribe.component.scss']
)
export class SubscribeComponent 

    constructor()  

GET http://localhost:4200/subscribe.component.html404(未找到)

【问题讨论】:

Logger 的构造函数是什么样子的? 你为什么用数组[Logger],包装Logger? - 应该可以正常工作,只是好奇 WRT 最后一个问题 - 这只是一个疏忽 - 我改变了它。 WRT Logger 库 - 我刚刚完全注释掉它 - 现在它移动到下一个类,但出现相同的错误 - 即。在更高级别上确实存在一些问题 - 我不认为这不是特定的类或服务错误。 好的,我设法解决了这个问题(12 小时后)。我仍然不知道是什么原因造成的,但以上所有内容都是红鲱鱼 - 我最终回滚了所有更改。我在我的 packages.json 中固定了一些确切版本的 Angular 和其他库,并删除了节点文件夹并重新安装。然后它似乎工作......非常令人沮丧,但至少它现在在 AOT 工作......感谢您的帮助 【参考方案1】:

通过删除所有桶导入并升级到 beta 28.3 来启动和运行

npm uninstall -g angular-cli
npm cache clean
npm install -g angular-cli@1.0.0-beta.28.3

并且还在项目文件夹中本地更新到 28.3(更新 angular-cli.json 和 package.json)。

【讨论】:

出于兴趣,您为什么不升级到 RC1?后面的版本中有很多好东西 是的,我回复了以防万一有人急需修复:)

以上是关于无法解析 xyz 的所有参数:(?, ?) 自 Angular2 CLI 升级以来的主要内容,如果未能解决你的问题,请参考以下文章

MAVEN BUILD FAILURE - 无法解析项目 XYZ 的依赖关系

角度未捕获错误:无法解析服务的所有参数

Tomcat 无法解析POST请求的参数

捆绑包 XYZ 无法解析。原因:缺少约束:Import-Package:ABC;无头 RCP 独立版本中的 version="1.0.0" 错误

NGXS 错误:无法解析 TranslationEditorState 的所有参数:(?)

错误:无法解析ContactService的所有参数:(?)