You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular升级后出现Transloco TRANSLOCO_TRANSPILER注入错误求助

解决Angular升级后Transloco的TRANSLOCO_TRANSPILER注入错误

问题分析

升级Angular后出现NullInjectorError: R3InjectorError(...) -> TRANSLOCO_TRANSPILER错误,且未自定义过转译器,核心原因是:

  • Angular版本升级后,@ngneat/transloco版本不兼容,导致默认转译器未被正确注册
  • Standalone模式下,Transloco的默认依赖(如转译器)需要手动显式提供,而非自动导入

解决方案

1. 确认Transloco与Angular版本兼容

执行以下命令查看当前Transloco版本:

npm list @ngneat/transloco

确保版本与你的Angular版本匹配(例如Angular 16+对应Transloco 6.x及以上版本),若不兼容,升级Transloco到对应版本:

npm install @ngneat/transloco@latest

2. 显式提供默认转译器

修改transloco.provider.ts,导入并添加默认转译器的提供者:

import { APP_INITIALIZER, EnvironmentProviders, importProvidersFrom, inject, Provider } from '@angular/core';
// 新增导入
import { TRANSLOCO_CONFIG, TRANSLOCO_LOADER, TRANSLOCO_TRANSPILER, DEFAULT_TRANSLOCO_TRANSPILER, translocoConfig, TranslocoModule, TranslocoService } from '@ngneat/transloco';
import { TranslocoHttpLoader } from 'app/core/transloco/transloco.http-loader';

export const provideTransloco = (): Array<Provider | EnvironmentProviders> =>
{
    return [
        importProvidersFrom(TranslocoModule),
        {
            provide : TRANSLOCO_CONFIG,
            useValue: translocoConfig({
                availableLangs      : [
                    {
                        id   : 'en',
                        label: 'English',
                    },
                    {
                        id   : 'br',
                        label: 'Português',
                    },
                ],
                defaultLang         : 'br',
                fallbackLang        : 'en',
                reRenderOnLangChange: true,
                prodMode            : true,
            }),
        },
        {
            provide : TRANSLOCO_LOADER,
            useClass: TranslocoHttpLoader,
        },
        // 新增默认转译器提供者
        {
            provide: TRANSLOCO_TRANSPILER,
            useValue: DEFAULT_TRANSLOCO_TRANSPILER
        },
        {
            provide   : APP_INITIALIZER,
            useFactory: () =>
            {
                const translocoService = inject(TranslocoService);
                const defaultLang = translocoService.getDefaultLang();
                translocoService.setActiveLang(defaultLang);

                return () => translocoService.load(defaultLang).toPromise();
            },
            multi     : true,
        },
    ];
};

3. 清理依赖缓存

删除node_modules、package-lock.json(或yarn.lock),重新安装依赖:

rm -rf node_modules package-lock.json
npm install

4. 检查@fuse/angular的依赖冲突

由于使用了@fuse/angular主题框架,确认其依赖的Transloco版本与你项目中的版本一致,若存在冲突,可通过npm overrides强制统一版本:
在package.json中添加:

"overrides": {
  "@ngneat/transloco": "^6.0.0" // 替换为你使用的兼容版本
}

然后重新安装依赖。

内容的提问来源于stack exchange,提问作者Alcure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:57:07