【问题标题】:Angular 7:@angular/core/core has no exported member 'OpaqueToken'Angular 7:@angular/core/core 没有导出成员 'OpaqueToken'
【发布时间】:2019-04-08 20:35:06
【问题描述】:

在构建刚刚从 Angular 创建的全新项目时收到此错误消息:

ERROR in node_modules/@ngrx/store/src/ng2.d.ts(1,10): error TS2305: Module '"../../../@angular/core/core"' has no exported member 'OpaqueToken'.

我做了一堆搜索,发现了一些不是我的问题。这里有一些:

1) Module '"node_modules/@angular/core/core"' has no exported member 'OpaqueToken',不使用弹性布局

2) Why error in Angular 5 as : has no exported member 'OpaqueToken'.?,没有 flex-layout,没有 agm,其他问题 Angular 5 特定。

3)Angular - Module has no exported member 'OpaqueToken' Error,尝试将ngrx升级到最新,没有效果。

这是一个简单的应用程序,它使用 http 请求并将结果放入存储中,然后从存储中读取结果。

我没有直接使用 OpaqueToken。这是我的 package.json dep 部分:

  "dependencies": {
    "@angular/animations": "~7.2.0",
    "@angular/common": "~7.2.0",
    "@angular/compiler": "~7.2.0",
    "@angular/core": "~7.2.0",
    "@angular/forms": "~7.2.0",
    "@angular/platform-browser": "~7.2.0",
    "@angular/platform-browser-dynamic": "~7.2.0",
    "@angular/router": "~7.2.0",
    "@ngrx/core": "github:ngrx/core",
    "@ngrx/store": "github:ngrx/store",
    "core-js": "^2.5.4",
    "cors": "^2.8.5",
    "ngrx": "^2.0.1",
    "rxjs": "^6.4.0",
    "rxjs-compat": "^6.4.0",
    "tslib": "^1.9.0",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.13.0",
    "@angular/cli": "~7.3.1",
    "@angular/compiler-cli": "~7.2.0",
    "@angular/language-service": "~7.2.0",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~3.1.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.2.2"
  }
}

有什么不兼容的想法吗?我对 Angular 还是很陌生,而且这似乎太频繁了,仅仅从 Angular 创建一个新应用程序就必须修复依赖关系。

【问题讨论】:

  • 建议:考虑只删除node_modules/* 和所有子文件夹,然后尝试新的npm install
  • @paulsm4 我试过了,但从那以后我做了一些改变,所以我又试了一次。结果相同。
  • @Thom 那么这个问题有什么解决方案吗?

标签: angular


【解决方案1】:

我不确定github:ngrx/store 究竟会解决什么问题,但它看起来像最新的“稳定”版本(当我转到https://github.com/ngrx/store 时得到的)是 2.X 并且根据@中的package.json 987654325@ 2.X 版本只兼容 Angular 2.X 和 Angular 4.X 并且你使用的是 Angular 7.X。

ngrx/store 的 4.X 版本似乎针对 Angular 8.X,所以也许你应该试试那个?

此外,Angular 也会发生这种情况,因为组件通常会将 Angular 列为对等依赖项(有很好的理由)。这意味着,即使您的 Angular 版本无效,您也只会在安装时收到警告,而不是错误。

【讨论】:

  • 做到了,谢谢。我想知道为什么它安装了这样一个破旧版本的ngrx/store。我将其更改为:“@ngrx/store”:“^4.1.1”,
  • 啊,似乎有某种名称更改。 2.X 之后版本的 NPM 模块 @ngrx/store 存储在 Github 存储库中:github.com/ngrx/platform
【解决方案2】:

检查角度documentation 我没有找到OpaqueToken。我认为它之前已被弃用,现在已从 @angular/core 中删除。 确切地说,InjectionTokendocumentation 之后的 Angular 支持。

InjectionToken

Creates a token that can be used in a DI Provider.

解决方案是将OpaqueToken 替换为InjectionToken

附: 您也可以关注NgProbeToken(这取决于您的需求):

NgProbeToken

A token for third-party components that can register themselves with NgProbe.

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 1970-01-01
    • 2020-01-24
    • 2022-06-21
    • 1970-01-01
    • 2018-06-23
    • 2017-07-07
    • 2022-01-18
    • 2019-02-02
    相关资源
    最近更新 更多