Javascript GraphQL无法读取属性';查询';未定义的
当我知道我的定义是正确的时,我无法理解为什么我会得到一个未定义的查询Javascript GraphQL无法读取属性';查询';未定义的,javascript,graphql,apollo,postgraphile,Javascript,Graphql,Apollo,Postgraphile,当我知道我的定义是正确的时,我无法理解为什么我会得到一个未定义的查询graphiQL正在毫无问题地选择我的方案: 自动完成工作良好: 点击ctrl+enter后,输入所有字段,请参见上文 然后执行查询,我将得到: { "errors": [ { "message": "Cannot read property 'query' of undefined", "locations": [ { "line": 1,
graphiQL
正在毫无问题地选择我的方案:
自动完成工作良好:
点击ctrl+enter
后,输入所有字段,请参见上文
然后执行查询,我将得到:
{
"errors": [
{
"message": "Cannot read property 'query' of undefined",
"locations": [
{
"line": 1,
"column": 3
}
],
"path": [
"allAwards"
]
}
],
"data": {
"allAwards": null
}
}
npm运行图
graphql_server.js
从“express”导入express
从“pg”导入pg
从“express graphql”导入graphqlHTTP
从“postgraphile apollo服务器”导入PAS
从“apollo server express”导入AP
const{makeSchemaAndPlugin}=PAS
const{ApolloServer}=AP
const env=process.env.NODE|env | |“development”
const dbHost=process.env.DB_HOST
const dbPort=process.env.DB\u端口
const dbName=process.env.DB_NAME
const dbUser=process.env.DB\u USER
const dbPwd=process.env.DB_PWD
常量dbUrl=dbPwd
? `postgres://${dbUser}:${dbPwd}@${dbHost}:${dbPort}/${dbName}`
:`postgres://${dbHost}:${dbPort}/${dbName}`
const pgPool=新pg.Pool({
connectionString:dbUrl,
})
异步函数main(){
const{schema,plugin}=wait makeSchemaAndPlugin(
pgPool,
“public”,//要使用的PostgreSQL架构
{
//PostGraphile选项,请参见:
// https://www.graphile.org/postgraphile/usage-library/
}
)
const server=新服务器({
模式,
插件:[插件],
})
const app=express()
应用程序使用(
“/graphql”,
graphqlHTTP({
schema:schema,
graphiql:是的,
})
)
applyMiddleware({app})
app.listen({port:4000},()=>console.log(`您不应该在express应用程序中同时使用express graphql
和apollo server
中的中间件。因为postgraphile apollo server
与apollo server显式协同工作,所以将express graphql
一起删除。使用这两个中间件可能会导致意外问题,因为它们都在侦听同样的路径
Apollo放弃了GraphiQL,取而代之的是GraphQL游乐场。如果你想在Apollo中使用GraphiQL,你可以使用这样的包。为什么要在Apollo上使用express GraphQL
?如果你需要GraphiQL,Apollo已经公开了一个GraphQL游乐场接口,它可以完成GraphiQL所做的一切,还可以做更多。有可能通过应用这两个中间件,您正在创建一些意外的冲突。请先尝试删除express graphql
。是的,这就是原因。我不喜欢游乐场,因为它没有自动完成功能。我希望它有:(我确实删除了它,而且它确实修复了它,但现在我遇到了一点障碍。QL Playerd是否有autocomplete?工作正常。我以前见过autocomplete中断,通常是因为架构出了问题,而内省查询返回了意外的结果。您可以在浏览器中检查控制台,看看是否有在这些情况下会出现一个错误。谢谢Daniel,它实际上是在字段上自动完成的,所以我在自动完成后的edge>节点>*
字段都是。但是,是的,我认为你的答案是关于真正的问题。我想知道是否有办法在操场上使用graphqil?@JamieHutber。你可以随时尝试类似的方法它应该只在指定的路径上提供GraphiQL,而不涉及任何其他内容。钉上它,将其添加到答案中,我会在心跳后接受:D谢谢你,先生。现在我需要修复这个lol
"graphql": "nodemon -r dotenv/config --experimental-modules --inspect=[9222] graphql_server.js",