使用my Angular+Webpack+JHipster+yarn project我收到以下错误消息。然后我删除node_modules
并运行' npm install`,它就消失了。然后我这样做,然后又回来了。怎么会?我不想那样做。错误中列出的TranslateService是由库提供的,而不是我自己的库,并且在我未编写的项目的three generated components中使用。
ERROR Error: No provider for TranslateService!
at injectionError (vendor.dll.js:1659)
at noProviderError (vendor.dll.js:1697)
at ReflectiveInjector_._throwOrNull (vendor.dll.js:3198)
at ReflectiveInjector_._getByKeyDefault (vendor.dll.js:3237)
at ReflectiveInjector_._getByKey (vendor.dll.js:3169)
at ReflectiveInjector_.get (vendor.dll.js:3038)
at GreatBigExampleApplicationAppModuleInjector.get (ng:///GreatBigExampleApplicationAppModule/module.ngfactory.js:515)
at GreatBigExampleApplicationAppModuleInjector.getInternal (ng:///GreatBigExampleApplicationAppModule/module.ngfactory.js:2452)
at GreatBigExampleApplicationAppModuleInjector.NgModuleInjector.get (vendor.dll.js:4005)
at resolveDep (vendor.dll.js:11467)
答案 0 :(得分:4)
作为documented on ngx-translate's github:
您必须在应用程序的根NgModule中导入TranslateModule.forRoot()。
<强> app.module.ts 强>:
@NgModule({
imports: [
//...
TranslateModule.forRoot(),
],
//...
})
或者,如果您使用的是SharedModule
:
如果您使用在多个其他要素模块中导入的SharedModule,则可以导出TranslateModule以确保不必在每个模块中导入它
@NgModule({
exports: [
//...
TranslateModule,
],
//...
})
答案 1 :(得分:1)
我不是百分之百确定它做了什么,但我删除了yarn.lock,更正了节点版本差异,更新了json
,现在似乎已经修复了。我的node_modules
有节点6.11.0,但我一直使用6.10.3来安装包和运行。
更新: 抓一点。问题又回来了。它是在更改node_modules /下的源文件后启动的。在完全重新安装所有节点模块后删除了目标/ ...之后删除yarn.lock后,它仍然在反转更改后... ...后检查主分支。最后,在重新安装所有节点模块之后,它再次运行。
我不知道发生了什么。
答案 2 :(得分:0)
或者您必须像这样在没有 SharedModule 的情况下直接导出 TranslateModule
中的 app.module.ts
:
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
@NgModule({
declarations: [
AppComponent,
//..
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule,
//..
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: httpTranslateLoader,
deps: [HttpClient]
}
}),
],
exports: [TranslateModule],
providers: [Title, HttpClient, HttpClientModule],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
// AOT compilation support
export function httpTranslateLoader(http: HttpClient):any {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}