无法解析 AppComponent 的所有参数
Can't resolve all parameters for AppComponent
我正在建设一个大项目,这是其中的一部分。我的问题很常见,但是我没有找到解决它的方法。真的需要你的帮助!我收到类型错误。我很乐意提供任何帮助
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
尝试在 app.module.shared.ts:
的这一行之后加上分号
import { AppService } from './app.service'
我们可能会因为各种原因收到此错误,例如:
语法错误、逗号重复或分号缺失
您的服务应该从如下相对路径引用,
我觉得你需要
import { AppService } from '.app/app.service';
而不是
import { AppService } from '@app/app.service';
问题已通过向 AppComponent 中的服务添加 Inject 指令解决
constructor(@Inject(AppService) service: AppService)
试试这个。它对我有用,似乎是 polyfill 问题。
<script src="node_modules/core-js/client/shim.min.js"></script>
https://github.com/angular/angular/issues/19417
1 天后,我意识到我删除了一些我认为不需要的 polyfill。
这就是我所缺少的:
import 'core-js/es7/reflect';
有关详细信息,请参阅 https://github.com/angular/angular/issues/19417#issuecomment-359722822
。
我已经解决了这个错误,导入 'core-js',在所有模块之前。但是,我有一个混合应用程序;
在我的例子中,我尝试使用:
constructor(private location: Location) { }
但是您必须知道有一个接口和一个同名的库。界面是我的问题,因为我需要库,所以我再次在选项中仔细选择并选择了自动添加的库:
import { Location } from '@angular/common';
问题解决了....
请确保您已将 'emitDecoratorMetadata' 设置为 true
,如下所示 tsconfig.js
{
"compileOnSave": false,
"compilerOptions": {
"emitDecoratorMetadata": true
}
}
这将解决您的问题。
我正在建设一个大项目,这是其中的一部分。我的问题很常见,但是我没有找到解决它的方法。真的需要你的帮助!我收到类型错误。我很乐意提供任何帮助
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
尝试在 app.module.shared.ts:
的这一行之后加上分号import { AppService } from './app.service'
我们可能会因为各种原因收到此错误,例如: 语法错误、逗号重复或分号缺失
您的服务应该从如下相对路径引用,
我觉得你需要
import { AppService } from '.app/app.service';
而不是
import { AppService } from '@app/app.service';
问题已通过向 AppComponent 中的服务添加 Inject 指令解决
constructor(@Inject(AppService) service: AppService)
试试这个。它对我有用,似乎是 polyfill 问题。
<script src="node_modules/core-js/client/shim.min.js"></script>
https://github.com/angular/angular/issues/19417
1 天后,我意识到我删除了一些我认为不需要的 polyfill。
这就是我所缺少的:
import 'core-js/es7/reflect';
有关详细信息,请参阅 https://github.com/angular/angular/issues/19417#issuecomment-359722822
。
我已经解决了这个错误,导入 'core-js',在所有模块之前。但是,我有一个混合应用程序;
在我的例子中,我尝试使用:
constructor(private location: Location) { }
但是您必须知道有一个接口和一个同名的库。界面是我的问题,因为我需要库,所以我再次在选项中仔细选择并选择了自动添加的库:
import { Location } from '@angular/common';
问题解决了....
请确保您已将 'emitDecoratorMetadata' 设置为 true
,如下所示 tsconfig.js
{
"compileOnSave": false,
"compilerOptions": {
"emitDecoratorMetadata": true
}
}
这将解决您的问题。