Javascript graphqlHTTP不是一个函数
这是我的简单graphql express应用程序Javascript graphqlHTTP不是一个函数,javascript,node.js,express,graphql,express-graphql,Javascript,Node.js,Express,Graphql,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, () => { consol
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
graphqlHTTP({
^
TypeError:graphqlHTTP不是函数
对象处。(D:\PersonalProjects\GraphQL\server\app.js:7:5)
at模块编译(内部/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:1158:10)
在Module.load(内部/modules/cjs/loader.js:986:32)
at Function.Module._load(内部/modules/cjs/loader.js:879:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:71:12)
在internal/main/run_main_module.js:17:47
如何修复它?请提前感谢!查看:
请注意,它使用的解构等效于:
const graphqlHTTP = require('express-graphql').graphqlHTTP;
require('express-graphql')
返回一个具有名为graphqlHTTP
的属性的对象,该属性就是您要调用的函数
你试图调用对象本身,就好像它是一个函数一样。昆汀的回答是现场的。很明显,该文件已经更新,但YouTube上的一些教程没有更新。这就是为什么像我这样的学习者会有一定程度的困惑。 还有一些过时的代码版本,比如 这个: 这个: 或者这个: 它们都应该更新到
const { graphqlHTTP } = require('express-graphql');
然后
app.use('/graphql', graphqlHTTP({
schema:schema,
graphiql:true
}));
通过上述答案解决了同样的问题 对于任何想知道的人,express graphql版本0.10.0是相关更改的起点,因此您可以检查您的package.json express graphql依赖项版本号
您可以使用
const gqlHTTP = require('express-graphql');
app.use('/graphql', gqlHTTP.graphqlHTTP({
// something
}))
更清楚地说: 在“expressgraphql”返回一个直接函数或带有该函数的类之前,我们可以将其分配给任何变量,如graphqlServer
const graphqlServer=require('express-graphql');
现在,它返回整个对象,其中包含一个名为“graphqlHTTP”的函数
const{graphqlHTTP}=require('express-graphql');
为了建立联系
app.use('/graphql', graphqlHTTP({
// your config
}));
简单设置: 不要使用自己的参数严格使用{graphqlHTTP} 只需将express graphql装载为路由处理程序:
const express=require('express');
const{graphqlHTTP}=require('express-graphql');
常量app=express();
应用程序使用(
“/graphql”,
graphqlHTTP({
模式:MyGraphQLSchema,
graphiql:是的,
}),
);
app.listen(4000,()=>{
console.log('服务器正在端口4K上运行')
)
首先,您需要解构
const { graphqlHTTP } = require('express-graphql');
谢谢。这真的很有帮助。我在观看2019年3月2日的40分钟GraphQL视频教程时遇到了这个错误。
const { graphqlHTTP } = require('express-graphql');