【问题标题】:Can't resolve all parameters for AppComponent无法解析 AppComponent 的所有参数
【发布时间】:2017-11-22 16:10:08
【问题描述】:

我正在建设一个大项目,这是其中的一部分。我的问题很常见,但是我没有找到解决方法。真的需要你的帮助!我收到类型错误。我很乐意为您提供任何帮助

Uncaught Error: Can't resolve all parameters for AppComponent: (?).
at syntaxError (main-client.js:52112)
at CompileMetadataResolver._getDependenciesMetadata (main-client.js:67193)
at CompileMetadataResolver._getTypeMetadata (main-client.js:67028)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (main-client.js:66536)
at CompileMetadataResolver._getEntryComponentMetadata (main-client.js:67341)
at main-client.js:66822
at Array.map (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (main-client.js:66822)
at CompileMetadataResolver.getNgModuleSummary (main-client.js:66645)
at main-client.js:66733
at Array.forEach (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (main-client.js:66718)
at JitCompiler._loadModules (main-client.js:85147)
at JitCompiler._compileModuleAndComponents (main-client.js:85108)
at JitCompiler.compileModuleAsync (main-client.js:85024)
at CompilerImpl.compileModuleAsync (main-client.js:50948)
at PlatformRef.bootstrapModule (main-client.js:6395)
at Object.defineProperty.value (main-client.js:49385)
at __webpack_require__ (main-client.js:679)
at fn (main-client.js:89)
at Object.options.path (main-client.js:48085)
at __webpack_require__ (main-client.js:679)
at module.exports (main-client.js:725)
at main-client.js:728

这是我的 app.module.shared.ts

    import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

import { AppComponent } from './app.component';
import { AppService } from './app.service'
import { HttpClient, HttpClientModule } from '@angular/common/http';
export function HttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http,
    ((typeof window !== 'undefined') ? window.location.origin: "http://localhost:5000")
        +'/assets/i18n/', '.json');
}

@NgModule({
declarations: [
    AppComponent,
],
imports: [
    HttpClientModule,
    FormsModule,
    ReactiveFormsModule,
    TranslateModule.forRoot({
    loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
    }
    }),
    BrowserModule    
],
providers: [AppService],
bootstrap: [AppComponent]
})

export class AppModuleShared {
}

这是我的 app.component.ts

import { Component } from '@angular/core';
import { AppService } from '@app/app.service';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {
    constructor(service: AppService) { }
}

这是我的 app.component.html

<p>WORK</p>

这是我的 app.service.ts

import { Injectable } from '@angular/core';
@Injectable()
export class AppService { }

这是我的 package.json

    {
    "name": "new_ang",
    "private": true,
    "version": "0.0.0",
    "scripts": {
        "test": "karma start ClientApp/test/karma.conf.js"
    },
    "dependencies": {
        "@angular/animations": "5.0.2",
        "@angular/common": "5.0.2",
        "@angular/compiler": "5.0.2",
        "@angular/compiler-cli": "5.0.2",
        "@angular/core": "5.0.2",
        "@angular/forms": "5.0.2",
        "@angular/http": "5.0.2",
        "@angular/platform-browser": "5.0.2",
        "@angular/platform-browser-dynamic": "5.0.2",
        "@angular/platform-server": "5.0.2",
        "@angular/router": "5.0.2",
        "@aspnet/signalr-client": "1.0.0-alpha2-final",
        "@ng-bootstrap/ng-bootstrap": "1.0.0-beta.5",
        "@nguniversal/aspnetcore-engine": "^5.0.0-beta.5",
        "@ngx-translate/core": "8.0.0",
        "@ngx-translate/http-loader": "^2.0.0",
        "@types/webpack-env": "^1.13.2",
        "angular": "^1.6.6",
        "angular-oauth2-oidc": "3.0.2",
        "angular2-jwt": "0.2.3",
        "aspnet-prerendering": "3.0.1",
        "aspnet-webpack": "2.0.1",
        "bootstrap": "4.0.0-beta.2",
        "core-js": "2.5.1",
        "font-awesome": "4.7.0",
        "isomorphic-fetch": "2.2.1",
        "msgpack5": "3.6.0",
        "ng2-charts": "^1.6.0",
        "ng2-tree": "^2.0.0-rc.2",
        "ngx-swiper-wrapper": "^5.0.2",
        "preboot": "5.1.7",
        "rxjs": "5.5.2",
        "zone.js": "0.8.18"
    },
    "devDependencies": {
        "@angular/cli": "1.5.2",
        "@angular/compiler-cli": "5.0.2",
        "@compodoc/compodoc": "1.0.4",
        "@ngtools/webpack": "1.8.2",
        "@types/hammerjs": "2.0.35",
        "@types/jasmine": "2.6.3",
        "@types/node": "8.0.51",
        "@types/selenium-webdriver": "3.0.8",
        "@types/source-map": "0.5.2",
        "@types/uglify-js": "2.6.29",
        "@types/webpack": "3.8.1",
        "angular-router-loader": "^0.8.0",
        "angular2-template-loader": "0.6.2",
        "awesome-typescript-loader": "3.3.0",
        "codelyzer": "4.0.1",
        "css-loader": "0.28.7",
        "extract-text-webpack-plugin": "3.0.2",
        "file-loader": "1.1.5",
        "html-loader": "0.5.1",
        "html-webpack-plugin": "2.30.1",
        "istanbul-instrumenter-loader": "3.0.0",
        "karma": "1.7.1",
        "karma-chrome-launcher": "2.2.0",
        "karma-coverage": "1.1.1",
        "karma-coverage-istanbul-reporter": "1.3.0",
        "karma-jasmine": "1.1.0",
        "karma-jasmine-html-reporter": "0.2.2",
        "karma-mocha-reporter": "2.2.5",
        "karma-remap-coverage": "0.1.4",
        "karma-sourcemap-loader": "0.3.7",
        "karma-webpack": "2.0.6",
        "ng-router-loader": "2.1.0",
        "node-sass": "4.7.1",
        "protractor": "5.2.0",
        "raw-loader": "0.5.1",
        "sass-loader": "6.0.6",
        "source-map-loader": "0.2.3",
        "style-loader": "0.19.0",
        "to-string-loader": "1.1.5",
        "ts-node": "3.3.0",
        "tslib": "1.8.0",
        "tslint": "5.8.0",
        "typescript": "2.6.1",
        "uglifyjs-webpack-plugin": "1.0.1",
        "url-loader": "0.6.2",
        "webpack": "3.8.1",
        "webpack-bundle-analyzer": "2.9.1",
        "webpack-hot-middleware": "2.20.0",
        "webpack-merge": "4.1.1"
    }
}

环境

Angular CLI: 1.5.2
Node: 8.3.0
OS: linux x64
Angular: 5.0.2

【问题讨论】:

  • 就是AppService的全部代码吗?该服务是否在其构造函数中注入了依赖项?
  • @Jota.Toledo AppService 完全是空的,里面没有任何代码,这就是他的全部
  • 您介意将 BrowserModule 放在导入的顶部并检查是否有影响吗?
  • @Jota.Toledo ofc,我做到了,但结果是一样的

标签: angular angular5


【解决方案1】:

通过在 AppComponent 中的 Service 中添加 Inject 指令解决了问题

constructor(@Inject(AppService) service: AppService)

【讨论】:

  • 这对我有用。如果没有 Inject,该应用程序运行良好。但是,使用 ng 测试,似乎需要 Inject。我正在使用 Angular 6
  • Angular 7 中的情况完全相同:stackoverflow.com/q/57817610/220545
【解决方案2】:

经过 1 天后,我意识到我已经删除了一些我认为不需要的 polyfill。 这就是我所缺少的: import 'core-js/es7/reflect'; 请参阅https://github.com/angular/angular/issues/19417#issuecomment-359722822 了解更多信息。

【讨论】:

    【解决方案3】:

    尝试在您的 app.module.shared.ts 中的这一行之后放置分号:

    import { AppService } from './app.service' 
    

    我们可能会因为各种原因出现此错误,例如: 语法错误、重复的逗号或缺少分号

    【讨论】:

    • 你好@Aakriti,谢谢回复,我放了分号,但结果是一样的
    【解决方案4】:

    您的服务应从以下相对路径引用,

    我认为你需要

    import { AppService } from '.app/app.service';
    

    而不是

    import { AppService } from '@app/app.service';
    

    【讨论】:

    • ,感谢您的回复,我认为您在 .(dot) 之前缺少 /(斜杠):) 但不是,此选项没有帮助
    【解决方案5】:

    就我而言,我试图使用:

    constructor(private location: Location) { }
    

    但是你必须知道有一个接口和一个同名的库。界面是我的问题,因为我需要库,所以我在选项中再次仔细选择并选择了自动添加的库:

    import { Location } from '@angular/common';
    

    问题解决了....

    【讨论】:

      【解决方案6】:

      请确保您将“emitDecoratorMetadata”设置为true,如下图tsconfig.js

      {
        "compileOnSave": false,
        "compilerOptions": {
          "emitDecoratorMetadata": true
        }
      }
      

      这将解决您的问题。

      【讨论】:

        【解决方案7】:

        试试这个。它对我有用,似乎是 polyfill 问题。

        &lt;script src="node_modules/core-js/client/shim.min.js"&gt;&lt;/script&gt; https://github.com/angular/angular/issues/19417

        【讨论】:

        • 如果您提供有关您的解决方案的更多信息会很有帮助
        • 使用 npm install core-js 并在浏览器中包含 shim.min.js 文件
        【解决方案8】:

        我已经在所有模块之前解决了这个错误,import 'core-js'。但是,我有一个混合应用程序;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-24
          • 1970-01-01
          • 1970-01-01
          • 2018-09-21
          • 1970-01-01
          • 1970-01-01
          • 2017-02-12
          • 1970-01-01
          相关资源
          最近更新 更多