Peer dependency 也是链接 npm 模块的 dev dependency 作为一个单独的实例

Peer dependency that is also dev dependency of linked npm module is acting as a separate instance

在我的应用程序中,我有这些依赖项:

TypeORM

typeorm-linq-repository 作为本地安装 ("typeorm-linq-repository": "file:../../../IRCraziestTaxi/typeorm-linq-repository"),具有 TypeORM

的开发依赖性和对等依赖性

我使用 "file:" 安装 typeorm-linq-repository 的原因是我是开发人员并在将发布推送到 npm 之前测试此应用程序中的更改。

我之前用的是node ~6.10 (npm ~4),所以我用"file:"安装的时候,只是把发布的文件复制过来,这就是我想要的。

但是,在升级到节点 8.11.3 (npm 5.6.0) 后,它现在链接文件夹而不是复制已发布的文件。

请注意,如果重要的话,我的环境是 Windows。

问题是这样的:由于我的应用程序和链接的 typeorm-linq-repository 在它们自己的 node_modules 文件夹中都有 TypeORM,因此 TypeORM 被视为模块的单独 "instance"每个应用程序。

因此,在主应用中创建连接后,当到达typeorm-linq-repository中访问连接的代码时,会抛出Connection "default" was not found..

的错误

我一直在孜孜不倦地寻找解决方案。我已经试过了--preserve-symlinks,但是那不行。

我现在完成这项工作的唯一方法是在我的应用程序 node_modules 中手动创建文件夹并复制适用的文件,这是一个巨大的痛苦。

如何告诉 npm 不要对 "file:" 安装进行符号链接或让它使用 TypeORM 模块的相同实例?

虽然我觉得它有点像创可贴,但我让它工作起来很容易。我会 post 在这里回答以帮助其他可能遇到此问题的人,但如果有人有更合适的解决方案,请随时回答,我会接受。

诀窍是 link 我的应用程序将 TypeORM 安装到我的其他 linked 依赖项的 node_modules 文件夹中的 TypeORM 文件夹。

...,
"typeorm": "file:../../../IRCraziestTaxi/typeorm-linq-repository/node_modules/typeorm",
"typeorm-linq-repository": "file:../../../IRCraziestTaxi/typeorm-linq-repository",
...