Angular ngx翻译:无法读取属性';currentLang';未定义的
我正在做一个Angular 6项目,自从我合并了一个特性分支后,我面临着一个非常恼人的问题 简单来说:Angular ngx翻译:无法读取属性';currentLang';未定义的,angular,git,angular6,ngx-translate,Angular,Git,Angular6,Ngx Translate,我正在做一个Angular 6项目,自从我合并了一个特性分支后,我面临着一个非常恼人的问题 简单来说: 从项目一开始,我们就在使用ngx translate模块,到目前为止,该模块运行良好 我们正在git分支上创建特性(比如我合并的那个),完成后我们在develop分支上合并它们 在合并之前,“开发”和“功能”分支都工作 现在,在合并之后,当应用程序引导时,ngx translate模块上出现以下错误: (堆栈跟踪的另一个副本) TypeError:无法读取未定义的属性“currentL
- 从项目一开始,我们就在使用
模块,到目前为止,该模块运行良好ngx translate
- 我们正在git分支上创建特性(比如我合并的那个),完成后我们在develop分支上合并它们
- 在合并之前,“开发”和“功能”分支都工作
ngx translate
模块上出现以下错误:
(堆栈跟踪的另一个副本)
TypeError:无法读取未定义的属性“currentLang”
在TranslationService.get currentLang[as currentLang](ngx translate core.js:398)
在TranslationService.use(ngx translate core.js:489)
在新的AppComponent上(app.component.ts:29)
在createClass(core.js:11733)
在createDirectiveInstance(core.js:11554)
在createViewNodes上(core.js:13095)
在createRootView(core.js:12967)
在callWithDebugContext(core.js:14455)
在Object.debugCreateRootView[作为createRootView](core.js:13702)
在ComponentFactory.create(core.js:10705)
经过一天的搜索,我仍然不明白为什么会出现这个错误。奇怪的是,所有产生错误的代码都没有经过编辑(无论是在开发分支还是功能分支上)
我可以看出此错误发生在调用translateService.use('en')
(我们可以在堆栈跟踪上看到)之后,原因是translateService
在应用程序引导上没有正确实例化
调用TranslateService
的构造函数时,这里有一个断点,我们可以看到大多数参数都是未定义的
:
这里是相同的断点,但具有项目的功能版本(在合并之前,所以),并且没有未定义的参数:
所以,如果有人知道发生了什么,这将是一个巨大的帮助,因为我没有新的想法
编辑-这是我的AppComponent
import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { LangService } from './core/services/lang.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
constructor(
private translate: TranslateService,
private languageService: LanguageService,
) {
this.translate.use('fr');
const subLang = this.languageService.getLangs().subscribe((rep) => {
this.translate.addLangues(rep);
this.translate.setDefaultLang(rep.find((l) => l.defaut).code);
this.translate.use(localStorage.getItem('lang'));
});
}
}
好吧,我终于知道发生了什么
只是在我的功能分支中编辑了tsconfig.json
这就是部分:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
...
"target": "es6" <------- This is the part that is failing
}
}
{
“保存”:false,
“编译器选项”:{
“baseUrl”:“/”,
...
“目标”:“es6”您可以检查“差异”在合并之前的提交中,如果问题发生在以前的开发分支中,那么它在合并之前工作正常。分支之间很可能存在版本不匹配。请向我们展示AppComponent
?@Niladri我现在检查模块版本,我会与您保持联系。@user184994我编辑过我的帖子添加了AppComponent
的代码,但我认为这不会有多大帮助,因为这段代码已经很长时间没有被修改过了。@Niladri所以我做了一些检查,但似乎不是版本不匹配(或者可能是warn.lock
的奇怪行为)。我做了以下测试,这对我来说是相关的:在旧的Functional版本上进行Igit checkout
(并对其进行测试,使其工作!),然后在上一个版本上进行Igit checkout
(使node\u模块
完全没有更改),然后应用程序中断。