expressGraphQL 不是函数

expressGraphQL is not a function

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

我收到错误:

TypeError: expressGraphQL is not a function
at Object.<anonymous>

我已经试过了:

现在的代码如下所示:

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'))

如果我注释掉这部分:

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

代码在有 {} 括号和没有括号的情况下都工作得很好。

请将您的 expressGraphQL 替换为 graphqlHTTP,因为它已被解构

使用:

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

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

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

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

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

请注意,它使用的解构等效于:

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

require('express-graphql') returns 一个名为 graphqlHTTP 的 属性 对象,它是您要调用的函数。

您正在尝试调用对象本身,就好像它是一个函数一样。enter code here

使用以下作为解决方案。

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');
}) 

从 express-graphql 解构 graphqlHTTP

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

app.use("/graphql", graphqlHTTP({ graphiql: true }));