"在静态解析符号值时遇到错误"在Angular中导入JSON时

时间:2017-05-20 13:35:20

标签: json angular typescript module angular-cli

我在Angular 4中有一个应用程序,我想在视图中的某处显示我的应用程序的版本。版本字符串预计包含在package.json version属性中。

我尝试过的是创建一个类并直接将JSON文件导入其中,然后通过getter方法公开该变量:

import * as PACKAGE from './../../../package.json';

export class PackageService {

  public static getVersion (): string {
    return (PACKAGE as any).version;
  }

}

但是,此解决方案会引发编译问题,例如:

ERROR in Error encountered resolving symbol values statically. Expression form not supported (position 8:13 in the original .ts file), resolving symbol PackageService.getVersion in ./src/app/services/package.service.ts, resolving symbol AppModule in ./src/app/app.module.ts, resolving symbol AppModule in ./src/app/app.module.ts

webpack: Failed to compile.

看起来问题在于方法是静态的。当我将此类转换为普通的Angular注射服务时。它编译正确。

我使用静态方法将版本字符串添加到DI容器中:{provide: DI_VERSION, useValue: PackageService.getVersion()},其中DI_VERSION是注入令牌。这将允许我直接访问版本字符串,而无需注入整个服务和调用方法。

究竟是什么原因导致此错误以及如何解决?

0 个答案:

没有答案