graphqlHTTP 不是函数
graphqlHTTP is not a function
这是我的简单 graphql express 应用程序
const express = require('express');
const graphqlHTTP = require('express-graphql');
const app = express();
app.use(
'/graphql',
graphqlHTTP({
graphiql: true,
})
);
app.listen(4000, () => {
console.log("listening for request!");
});
我在 运行 时遇到以下错误:
graphqlHTTP({
^
TypeError: graphqlHTTP is not a function
at Object.<anonymous> (D:\PersonalProjects\GraphQL\server\app.js:7:5)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
我该如何解决?提前致谢!
看看 documentation:
const { graphqlHTTP } = require('express-graphql');
请注意,它使用的解构等价于:
const graphqlHTTP = require('express-graphql').graphqlHTTP;
require('express-graphql')
returns 一个 对象 和一个 属性 称为 graphqlHTTP
那就是你要调用的函数。
您正试图像调用函数一样调用对象本身。
昆汀的回答很到位。显然 npm documentation 已更新,但 YouTube 上的一些教程并未更新。这就是为什么像我这样的学习者会有一定程度的困惑。
仍然有像
这样的代码的过时版本
这个:https://github.com/iamshaunjp/graphql-playlist/blob/lesson-36/server/app.js
这个:https://github.com/WebDevSimplified/Learn-GraphQL/blob/master/server.js
或者这个:https://github.com/bradtraversy/customerbase/blob/master/server.js
它们都应该更新为
const { graphqlHTTP } = require('express-graphql');
然后
app.use('/graphql', graphqlHTTP({
schema:schema,
graphiql:true
}));
上面的回答是否解决了同样的问题
对于任何想知道的人,express-graphql 版本 0.10.0 是相关更改开始的地方,因此您可以检查您的 package.json express-graphql 依赖版本号。
https://www.npmjs.com/package/express-graphql/v/0.9.0
https://www.npmjs.com/package/express-graphql/v/0.10.0
您可以使用
const gqlHTTP = require('express-graphql');
app.use('/graphql', gqlHTTP.graphqlHTTP({
// something
}))
只是为了更清楚:
在“express-graphql”返回直接函数或带有函数的 class 之前,我们可以将其分配给任何变量,如 graphqlServer
const graphqlServer = require('express-graphql');
现在,它 returns 整个对象内部有一个名为“graphqlHTTP”的函数。因此代码应该是
const { graphqlHTTP } = require('express-graphql');
并建立联系,
app.use('/graphql', graphqlHTTP({
// your config
}));
简单设置:
请勿使用您自己的参数,严格使用 { graphqlHTTP }!!!!
只需将 express-graphql 安装为路由处理程序即可:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const app = express();
app.use(
'/graphql',
graphqlHTTP({
schema: MyGraphQLSchema,
graphiql: true,
}),
);
app.listen(4000, () => {
console.log('Server is running on port 4K')
);
首先需要解构
const { graphqlHTTP } = require('express-graphql');
这段代码是用 express-graphql
的早期版本编写的。
在 v0.10.0 之前,您可以使用
var graphqlHTTP = require('express-graphql');
v0.10.0后需要使用
var { graphqlHTTP } = require('express-graphql');
这是我的简单 graphql express 应用程序
const express = require('express');
const graphqlHTTP = require('express-graphql');
const app = express();
app.use(
'/graphql',
graphqlHTTP({
graphiql: true,
})
);
app.listen(4000, () => {
console.log("listening for request!");
});
我在 运行 时遇到以下错误:
graphqlHTTP({
^
TypeError: graphqlHTTP is not a function
at Object.<anonymous> (D:\PersonalProjects\GraphQL\server\app.js:7:5)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
我该如何解决?提前致谢!
看看 documentation:
const { graphqlHTTP } = require('express-graphql');
请注意,它使用的解构等价于:
const graphqlHTTP = require('express-graphql').graphqlHTTP;
require('express-graphql')
returns 一个 对象 和一个 属性 称为 graphqlHTTP
那就是你要调用的函数。
您正试图像调用函数一样调用对象本身。
昆汀的回答很到位。显然 npm documentation 已更新,但 YouTube 上的一些教程并未更新。这就是为什么像我这样的学习者会有一定程度的困惑。 仍然有像
这样的代码的过时版本这个:https://github.com/iamshaunjp/graphql-playlist/blob/lesson-36/server/app.js
这个:https://github.com/WebDevSimplified/Learn-GraphQL/blob/master/server.js
或者这个:https://github.com/bradtraversy/customerbase/blob/master/server.js
它们都应该更新为
const { graphqlHTTP } = require('express-graphql');
然后
app.use('/graphql', graphqlHTTP({
schema:schema,
graphiql:true
}));
上面的回答是否解决了同样的问题
对于任何想知道的人,express-graphql 版本 0.10.0 是相关更改开始的地方,因此您可以检查您的 package.json express-graphql 依赖版本号。
https://www.npmjs.com/package/express-graphql/v/0.9.0
https://www.npmjs.com/package/express-graphql/v/0.10.0
您可以使用
const gqlHTTP = require('express-graphql');
app.use('/graphql', gqlHTTP.graphqlHTTP({
// something
}))
只是为了更清楚:
在“express-graphql”返回直接函数或带有函数的 class 之前,我们可以将其分配给任何变量,如 graphqlServer
const graphqlServer = require('express-graphql');
现在,它 returns 整个对象内部有一个名为“graphqlHTTP”的函数。因此代码应该是
const { graphqlHTTP } = require('express-graphql');
并建立联系,
app.use('/graphql', graphqlHTTP({
// your config
}));
简单设置:
请勿使用您自己的参数,严格使用 { graphqlHTTP }!!!!
只需将 express-graphql 安装为路由处理程序即可:
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const app = express();
app.use(
'/graphql',
graphqlHTTP({
schema: MyGraphQLSchema,
graphiql: true,
}),
);
app.listen(4000, () => {
console.log('Server is running on port 4K')
);
首先需要解构
const { graphqlHTTP } = require('express-graphql');
这段代码是用 express-graphql
的早期版本编写的。
在 v0.10.0 之前,您可以使用
var graphqlHTTP = require('express-graphql');
v0.10.0后需要使用
var { graphqlHTTP } = require('express-graphql');