`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‘
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)