无法在共享Angular 2库

时间:2017-07-26 06:32:14

标签: angular npm graphql apollo

我正在尝试为服务,组件和模型创建一个Angular 2库,我想在3-4个不同的接口/应用程序之间共享,这些接口/应用程序是同一个数据库的前端。

我正在使用非常有用的Angular 2生成器库here

我在库中的服务基于Apollo客户端和GraphQL。

但是,当我将库构建符号链接到我的主项目中时,Apollo依赖项似乎无法解决。

我的应用构建中出现以下两个错误:Can't resolve 'apollo-angular/index'Can't resolve 'graphql-tag/index'。尽管这两个库都安装在我的应用程序中的node_modules,但是,他们似乎没有通过Gulp构建转移到我的库的dist目录中但我甚至不确定它们是不是应该是。

我还尝试在我的库package.json中设置对等依赖项,如下所示:

"peerDependencies": {
    "@angular/core": "^4.0.0",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4",
    "graphql-tag": "^2.4.2",
    "apollo-angular": "^0.13.0",
    "apollo-client": "~1.9.0-1"
}

此外,当我运行npm install以检查所有内容是否已安装时,即使安装了Apollo Client npm WARN apollo-angular@0.13.0 requires a peer of apollo-client@>=0.8.0 <=0.10.1 || >=1.0.0-rc <2.0.0 but none was installed.,我也会获得npm WARN apollo-client-rxjs@0.5.2 requires a peer of apollo-client@>=0.7.2 <=0.10.1 || >=1.0.0-beta <2.0.0 but none was installed.1.9.0-1。我为我的应用和运行npm install的图书馆收到了这些警告。

如果我直接在我的应用程序中使用Apollo Client(而不是通过库),尽管有这些警告,它仍能正常工作。

任何人都可以帮我指出正确的方向来解决这些问题吗?

更新:

根据评论中的要求,我可以确认Apollo客户端存在于我的应用程序的node_modules文件夹和我的图书馆中。在这两种情况下,版本都是1.9.0-1。 Apollo Client用于从Angular 2应用程序轻松创建GraphQL查询。

1 个答案:

答案 0 :(得分:1)

可能因this问题而发生。

尝试在ts中定义路径

"compilerOptions" : {

  ...

  "paths": {
    "@angular/*": ["../node_modules/@angular/*"],
    "apollo-client": ["../node_modules/apollo-client"],
    "apollo-client-rxjs": ["../node_modules/apollo-angular/node_modules/apollo-client-rxjs"]
  }
}