当我尝试使用 Rails 6 加载 graphiql 客户端时,我在加载时收到此错误,特别是想要使用文档资源管理器。
TypeError: Cannot read property 'types' of undefined
at buildClientSchema (http://localhost:3000/assets/graphiql/rails/application-6f03c7a92432765b0fbe671bfb7a292ee6c37e6704b6e6ac95587e45676bbf72.js:34102:72)
at http://localhost:3000/assets/graphiql/rails/application-6f03c7a92432765b0fbe671bfb7a292ee6c37e6704b6e6ac95587e45676bbf72.js:2795:55
我尝试删除我的 graphql 目录并重新执行 rails generate graphql:install。
我在用
- 导轨 6
- graphiql-rails (1.7.0)
- graphql (1.10.5)
我最初仅将其构建为 API(并删除了不必要的文件,包括资产),但随后添加了必要的配置以在本地开发中运行 graphiql,包括添加一个 app/assets/config/manifest.js
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
我能够对其进行更多研究 - 我在 chrome 调试器中为第 34,102 行设置了一个断点,该断点具有以下代码:
function buildClientSchema(introspection, options) {
// Get the schema from the introspection result.
var schemaIntrospection = introspection.__schema;
// Converts the list of types into a keyMap based on the type names.
var typeIntrospectionMap = (0, _keyMap2.default)(schemaIntrospection.types, function (type) {
return type.name;
});
..... more code ......
问题在于schemaIntrospection.types
,schemaIntrospection
是未定义的。所以在上面,我检查了调用introspection.__schema
的自省变量 - 自省变量看起来像:
{"Schema":
{"queryType": {"name":"Query"},
"mutationType": {"name":"Mutation"},
"subscriptionType":null,
.... more JSON ...
所以,我最终做的不是拥有var schemaIntrospection = introspection.__schema;
,而是使用正确的键设置schemaIntrospection
变量:
var schemaIntrospection = introspection.Schema;
它奏效了!仅针对该特定调用:/,因为我使用了交互式调试器
有谁知道如何更永久地使用 ruby-graphql/graphiql 解决这个问题?
我希望能够使用文档资源管理器
谢谢!