为什么Angular 5中的错误为:没有导出的成员'OpaqueToken'。

时间:2018-01-15 09:35:10

标签: angular angular5 swagger-2.0 swagger-codegen

我有一个Angular 4应用程序,我正在升级到Angular 5.

我收到以下错误。

  

src / app / application / services / generated / variables.ts(1,10)中的错误:   错误TS2305:模块   ' “.... / node_modules / @角/核心/核心”'   没有导出的成员'OpaqueToken'。

代码段是:

import { OpaqueToken } from '@angular/core';

export const BASE_PATH = new OpaqueToken('basePath');
export const COLLECTION_FORMATS = {
    'csv': ',',
    'tsv': '   ',
    'ssv': ' ',
    'pipes': '|'
}

此代码由swagger editor生成。

5 个答案:

答案 0 :(得分:2)

OpaqueToken被删除了。您必须使用InjectionToken。 我面临同样的问题。 在片刻,最好的"解决方案是在每个代码生成之后替换令牌。但这不是一个永久的解决方案。

请为此问题做出贡献: https://github.com/swagger-api/swagger-codegen/issues/7324

答案 1 :(得分:2)

包括 package.json 文件

中的后续处理
"@angular/flex-layout": "^2.0.0-beta.12"

尝试删除node_modules文件夹,删除package.json文件,然后运行以下命令,希望此问题得到解决

npm install

请参阅此问题的以下链接 https://github.com/angular/flex-layout/issues/494#issuecomment-343355178

答案 2 :(得分:1)

请看 https://github.com/swagger-api/swagger-codegen/issues/7324#issuecomment-368548716

如果您想使用Angular 5,则需要使用支持版本切换的swagger-codegen版本。

这次最低稳定版本是2.3.0

您可以将(对于自定义配置)ngVersion定义为您想要的任何版本。只要semVer高于4.0,它就会生成注入令牌而不是OpaqueToken。

答案 3 :(得分:0)

当我升级到角度5.2.0时发生了这种情况。我最终不得不做以下事情:

已编辑package.json:无法更改@angular/compiler-cli的版本。在我的情况下,我不得不把它带回5.2.0,因为它以某种方式达到5.2.10。

删除了node_modules目录。

Ran:npm install

已安装:npm install @angular/flex-layout

答案 4 :(得分:0)

将角度4更新为5时出现此错误

我通过更改package.json文件解决了此问题

“ @ agm / core”:“ 1.0.0-beta.1”到“ @ agm / core”:“ 1.0.0-beta.5”

运行后 npm更新