对等依赖性(也就是链接的npm模块的dev依赖性)充当单独的实例

时间:2018-08-15 01:24:32

标签: npm typeorm

在我的应用中,我具有以下依赖性:

TypeORM

typeorm-linq-repository作为本地安装("typeorm-linq-repository": "file:../../../IRCraziestTaxi/typeorm-linq-repository"),具有dev依赖项和TypeORM的对等依赖项

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

我以前使用的是节点〜6.10(npm〜4),所以当我使用"file:"安装时,它只是复制了发布的文件,这正是我想要的。

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

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

问题是这样的:由于我的应用程序和链接的typeorm-linq存储库在其自己的node_modules文件夹中都具有TypeORM,因此TypeORM被视为每个应用程序中模块的单独“实例”。

因此,在主应用程序中创建连接后,到达用于访问typeorm-linq-repository中的连接的代码时,它将引发错误Connection "default" was not found.

我一直在不懈地寻找解决方案。我已经尝试过--preserve-symlinks,但这是行不通的。

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

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

1 个答案:

答案 0 :(得分:0)

尽管我觉得它有点像创可贴,但我使它工作起来非常容易。我将在此处发布答案,以帮助可能遇到此问题的其他任何人,但是如果有人有更合适的解决方案,请随时回答,我会接受。

诀窍是将我的应用程序的TypeORM安装链接到我的另一个链接依赖项的node_modules文件夹中的TypeORM文件夹。

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