Angular4升级Angular5遇OpaqueToken导出成员缺失错误求助
解决Angular 5升级中
OpaqueToken不存在的错误 这个问题我之前升级Angular版本的时候也碰到过!原因很直接:Angular 5已经彻底移除了OpaqueToken,改用InjectionToken来替代它——这是框架版本迭代里的标准化变更,所以你从Angular 4升级后,旧代码里的OpaqueToken就找不到对应的导出成员了。
针对你提供的Swagger生成的代码,只需要做两处修改就能解决:
- 把导入的
OpaqueToken换成InjectionToken - 实例化时加上类型标注(这是
InjectionToken推荐的做法,能获得更好的类型检查)
修改后的代码如下:
import { InjectionToken } from '@angular/core'; export const BASE_PATH = new InjectionToken<string>('basePath'); export const COLLECTION_FORMATS = { 'csv': ',', 'tsv': ' ', 'ssv': ' ', 'pipes': '|' }
另外提一句,因为你的代码是Swagger Editor生成的,可能当时的生成器版本还没适配Angular 5+的新特性,所以才会生成旧的OpaqueToken代码。替换成InjectionToken后,不仅能解决当前的编译错误,还能享受Angular新版本带来的类型安全优势。如果项目里其他地方也用到了OpaqueToken,记得统一替换成InjectionToken哦。
内容的提问来源于stack exchange,提问作者Partha Sarathi Ghosh
相关产品推荐
相关产品推荐

