【问题标题】:Peer dependency that is also dev dependency of linked npm module is acting as a separate instance对等依赖关系也是链接 npm 模块的开发依赖关系,它充当单独的实例
【发布时间】:2018-08-18 08:14:21
【问题描述】:

在我的应用程序中,我有以下依赖项:

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 被视为每个应用程序中模块的单独“实例”。

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

我一直在不知疲倦地寻找解决方案。我试过--preserve-symlinks,但还是不行。

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

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

【问题讨论】:

    标签: npm typeorm


    【解决方案1】:

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

    诀窍是将我的应用安装的 TypeORM 链接到我的其他链接依赖项的 node_modules 文件夹中的 TypeORM 文件夹。

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

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2017-02-06
      • 1970-01-01
      • 2016-07-13
      • 2017-09-25
      • 2016-07-21
      • 2016-07-12
      • 2019-07-04
      • 2020-01-21
      相关资源
      最近更新 更多