0

我对 NPM 包版本有点困惑

我有 ionic2 应用程序,并且在我的 packages.json 中,我依赖于 rxjs@5.1.1,我也有最新的 ionic-native,它依赖于 rxjs@5.0.1。

现在的问题是我为 Observable 编写了扩展来添加新方法。它在我的服务上按预期工作。但是当我使用 ionic-native 的服务时它不起作用。

此方法将起作用(Get 命令仅返回 Observable)

updateService.getCommands().ExtensionHere();

这不会(onChange 将返回 Observable)

BatteryStatus.onChange().ExtensionHere();

这是一个愚蠢的问题,但我有点卡住了,因为我认为 NPM 将为所有这些都使用最新版本。

所以我的问题是为什么它以这种方式工作?这有什么办法可以说使用相同的软件包版本吗?

4

1 回答 1

1

这是一个愚蠢的问题,但我有点卡住了,因为我认为 NPM 将为所有这些都使用最新版本。

不会。如果需要,每个模块都会获得自己的版本。

这有什么办法可以说使用相同的软件包版本吗?

rxjs只有当这些库具有peerDependency时,它才会这样工作。由peerDependencies 决定确切的版本。但这需要ionic-native更改他们的代码。

快速解决 :

需要手动添加两个版本来添加您的扩展名,即他们require('../node_modules/your/node_modules/rxjs')的扩展名相同。

于 2017-04-18T07:04:24.517 回答