如何配置我的角度库以使用正确安装的RxJS进行链接以进行本地测试?

我已经能够将库建立,链接并导入到主应用程序中,但是我的库提供了返回RxJs Observables的服务,并且我遇到一个问题,即返回类型是在库node_modules中发现的RxJs Observable ,而不是主应用程序node_modules:

Type 'import("D:/KeySystems-Angular-Packages/node_modules/rxjs/internal/Observable").Observable<boolean>' is not assignable to type 'import("d:/KeySystems-WebCustomerPortal/node_modules/rxjs/internal/Observable").Observable<boolean>'.
  Types of property 'source' are incompatible.
    Type 'import("D:/KeySystems-Angular-Packages/node_modules/rxjs/internal/Observable").Observable<any>' is not assignable to type 'import("d:/KeySystems-WebCustomerPortal/node_modules/rxjs/internal/Observable").Observable<any>'.ts(2322)

这是我的Angular library工作区的package.json:

{
  "name": "key-systems-core-workspace","version": "0.0.0","scripts": {},"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","@types/cpx": "^1.5.0","@types/npm": "^2.0.31","core-js": "^2.5.4","cpx": "^1.5.0","npm": "^6.12.1","rxjs": "~6.3.3","tslib": "^1.9.0","zone.js": "~0.8.26"
  },"devDependencies": {
    "@angular-devkit/build-angular": "~0.13.0","@angular-devkit/build-ng-packagr": "~0.13.0","@angular/cli": "~7.3.5","@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": "~4.0.0","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","ng-packagr": "^4.2.0","protractor": "~5.4.0","ts-node": "~7.0.0","tsickle": ">=0.34.0","tslint": "~5.11.0","typescript": "~3.2.2"
  }
}

和图书馆项目本身:

{
  "name": "state-management","version": "0.0.1","peerDependencies": {
    "@angular/common": "^7.0.0","@angular/core": "^7.0.0","rxjs": "^6.5"
  }
}

库的工作区的tsconfig:

{
  "compileonSave": false,"compilerOptions": {
    "baseUrl": "./","outDir": "./dist/out-tsc","sourceMap": true,"declaration": true,"declarationmap": true,"module": "es2015","moduleResolution": "node","emitDecoratorMetadata": true,"experimentalDecorators": true,"importHelpers": true,"target": "es5","typeRoots": [
      "node_modules/@types"
    ],"lib": [
      "es2018","dom"
    ],"paths": {
      "state-management": [
        "dist/state-management"
      ],"state-management/*": [
        "dist/state-management/*"
      ],"rxjs": [
        "./node_modules/rxjs"
      ],"rxjs/*": [
        "./node_modules/rxjs/*"
      ]
    }
  }
}

我的应用程序的tsconfig:

{
  "compileonSave": false,"compilerOptions": {
    "baseUrl": "src","paths": {
      "@shared/*": ["app/shared/*"],"rxjs": [
        "node_modules/rxjs"
      ],"rxjs/*": [
        "node_modules/rxjs/*"
      ]
    },"declaration": false,"typeRoots": [
      "node_modules/@types","src/global-types/typings.d.ts"
    ],"lib": [
      "es2017","resolveJsonmodule": true,// allow us to directly import json like modules
    "esModuleInterop": true,// quiets error about default exports when importing json,"downlevelIteration": true // supports downleveling iteration to es5 such as Sets
  }
}

据我所知,对等依赖关系应该位于tsconfig路径中-我假设在库中,但这对我没有用,所以我尝试了两者,如您在上面看到的。

这是一个问题,因为这会导致错误:

getBusinessClaims(): Observable<IBusinessClaims> {
    return this.stateService.get<IBusinessClaims>(ClaimType.Business);
}
tkhxq 回答:如何配置我的角度库以使用正确安装的RxJS进行链接以进行本地测试?

错误听起来好像导入应该来自其他位置,但是表面上这是由于版本mixmatch所致。我想将RxJs包锁定在次要而不是主要上是一个好主意,以避免这种情况。

本文链接:https://www.f2er.com/2751872.html

大家都在问