expressGraphQL 不是函数

Swa*_*wit 13 javascript nodemon graphql graphql-js macos-big-sur

我正在使用本教程为我的项目学习 GraphQL:https : //www.youtube.com/watch?v= ZQL7tL2S0oQ&ab_channel=WebDevSimplified

我得到错误:

TypeError: expressGraphQL is not a function
at Object.<anonymous>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过:

现在的代码如下所示:

const express = require ('express')
const { expressGraphQL } = require('express-graphql')
const app = express();

app.use('/graphql', expressGraphQL({
    graphiql: true,
})
)
app.listen(5000., () => console.log('Server Running'))
Run Code Online (Sandbox Code Playgroud)

如果我注释掉这一部分:

app.use('/graphql', expressGraphQL({
graphiql: true,
})
)
Run Code Online (Sandbox Code Playgroud)

无论使用 {} 括号还是不使用括号,代码都可以正常工作。

小智 41

请用 graphqlHTTP 替换你的 expressGraphQL,因为它被解构了

用:

const { graphqlHTTP } = require('express-graphql');
Run Code Online (Sandbox Code Playgroud)

或者

const expressGraphQL = require('express-graphql').graphqlHTTP
Run Code Online (Sandbox Code Playgroud)

这是因为 express-graphql 模块中存在一个名为 graphqlHTTP 的方法,而您正在使用该模块中不存在的另一个方法名称进行解构

我还注意到在 app.listen 函数上 5000 之后有一个点。

  • 和 +1 也来自[本教程](https://css-tricks.com/building-serverless-graphql-api-in-node-with-express-and-netlify/) (: (4认同)
  • 我认为这个问题如此受欢迎,因为[this](https://buddy.works/tutorials/building-graphql-server-using-nodejs-and-express)教程给出了错误的说明 (2认同)

小智 18

使用以下作为解决方案。

const express = require('express');
const expressGraphQL = require('express-graphql').graphqlHTTP;


const app = express();

app.use('/graphql', expressGraphQL({
    graphiql:true
}));

app.listen(4000, () => {
    console.log('Listning');
}) 
Run Code Online (Sandbox Code Playgroud)


小智 5

从express-graphql 解构 graphqlHTTP

const { graphqlHTTP } = require("express-graphql");

app.use("/graphql", graphqlHTTP({ graphiql: true }));
Run Code Online (Sandbox Code Playgroud)