代码之家  ›  专栏  ›  技术社区  ›  galki

具有本地npm链接的多存储库graphql类型

  •  0
  • galki  · 技术社区  · 7 年前

    给定2个存储库 user-repo project-repo ,我定义 UserType 用户回购 项目回购 我这样做:

    "dependencies": {
        "user-repo": "git+ssh://git@github.com/me/user-repo"
    }
    

    一切正常( 用户自定义类型 负荷 项目回购 然而,如果我像这样在本地链接回购:

    "dependencies": {
        "user-repo": "file:../../user-repo"
    }
    

    UserType instanceof GraphQLObjectType 退货 . 只有graphql类型出了问题。像模型这样的其他东西都加载得很好。

    我尝试了npm链接( npm link user-repo 有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ionut Achim    7 年前

    好的,我来了,我不完全确定,但我敢打赌 instanceof 这有点棘手,我正在想象以下场景:

    在内部构建模式 user-repo 然后你办理登机手续 project-repo graphql 安装模块依赖项意味着 GraphQLObjectType 中的构造函数 用户回购 项目回购 ,这就是为什么 运算符 返回false。你可以通过这样做来确认它实际上是好的 UserType.contructor.name === 'GraphQLObjectType'

    解决方案是导入 GraphQLObject 来自同一模块。看看这是否有效。

    和之前一样编辑了这个答案,我提供了一个带有网页别名的解决方案,但这不适用于后端。

        2
  •  0
  •   Community CDub    4 年前

    本节还讨论了这个问题 graphql-js 问题跟踪程序:

    https://github.com/graphql/graphql-js/issues/1091#issuecomment-349874772

    FB开发者李·拜伦的回答:

    当node\u modules目录中有多个graphql js实例时,就会出现此问题。npm link通过创建指向另一个目录的符号链接来工作,如果另一个目录中也有一个node\u modules文件夹,其中包含graphql js,那么您将拥有多个副本。

    当我以这种方式开发时,我通常会设置一个脚本,将cp作为我的子项目的构建源代码直接放入主项目的node\u modules目录中,避免任何文件系统符号化hyjinx。

    我们最终做到了:公共代码不再是npm包,我们使用符号链接在每个应用程序目录中映射公共代码目录,并以与任何应用程序模块相同的方式导入/要求。