`yarn run react` 在哪里适合 Relay 工作流程?

Posted

技术标签:

【中文标题】`yarn run react` 在哪里适合 Relay 工作流程?【英文标题】:Where does `yarn run react` fit into the Relay workflow? 【发布时间】:2017-11-09 12:20:41 【问题描述】:

我正在尝试让 Relay 与我的 React Native 应用程序一起工作并与我的 GraphQL 服务器通信。我想我缺少一些理解。

我正在按照https://facebook.github.io/relay/docs/relay-modern.html 的说明进行操作

它详细介绍了设置中继和 babel 插件的 yarn 命令。我将“中继”脚本添加到我的 package.json 中,如下所示:

"relay": "relay-compiler --src ./App --schema ./App/Data/schema.graphql"

但是,当我运行yarn run relay 时,我得到了

Error: --schema path does not exist: /Users/user/dev/react-native-app/App/Data/schema.graphql.

是的。它不存在。这不是这个命令应该生成的吗?该文档页面没有解释这个命令输出什么,也没有解释它需要什么作为输入。我怎样才能让这个命令正常工作?当服务器上已经存在架构时,我真的必须手写吗?

【问题讨论】:

【参考方案1】:

编辑,用于 php

鉴于您在 php 服务器上生成架构,您可以通过创建 Node.js 脚本来生成 .graphql 文件:

向您的/graphql 端点发送introspection query 将结果传递给buildClientSchema 用它调用printSchema并写入磁盘

graphql-js的一般用法

据我所知,您实际上需要用 GraphQL 语言打印您的架构。您可以查看 printSchema 以将其提供给中继编译器。

printSchema 将进行JS Object -> Schema Language 转换。如果您已经有了 Schema Language 的模式,这就是您需要提供给中继编译器的内容。

可能直接使用JS Object schema,但我不知道如何。

完整设置的详细说明可以看我的另一个回答here。

【讨论】:

这个信息肯定有帮助,但是如何从我的服务器获取 GraphQL 表示法的架构? GraphiQL 可以做到这一点吗? 在您的架构上调用 printSchema() 将以 GraphQL 表示法输出它;然后,您可以将其保存到文件中,例如命名为 schema.graphql 您必须有权访问您的架构对象 我在哪里打电话给printSchema()?在我的 PHP 服务器中? 哦,我虽然你使用的是graphql-js。我正在编辑我的 php 答案。

以上是关于`yarn run react` 在哪里适合 Relay 工作流程?的主要内容,如果未能解决你的问题,请参考以下文章

Unable to load script.Make sure you‘re either running a metro server( run ‘react-native start‘

yarn run ios 运行模拟器但不显示app图标

react-native启动时红屏报错:Unable to load script.Make sure you're either running a metro server or that

错误命令失败,退出代码为 1。使用 react-native 和 yarn eslint

Node升级 启动RN报错:react-native启动时红屏报错:Unable to load script.Make sure you're either running a metro

带有 Yarn、TypeScript 和 React Native 的 Lerna:找不到模块“@project/common”或其对应的类型声明。ts(2307)