graphqlHTTP 不是函数

新手上路,请多包涵

这是我简单的 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

我该如何解决?提前致谢!

原文由 Sachin Titus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 481
2 个回答

查看 文档

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

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

const graphqlHTTP = require(‘express-graphql’).graphqlHTTP;

”`

require('express-graphql') 返回一个 _对象_,其 属性 名为 graphqlHTTP 这是您要调用的函数。

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

原文由 Quentin 发布,翻译遵循 CC BY-SA 4.0 许可协议

昆汀的回答很当场。显然 npm 文档 已更新,但 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
}));

原文由 Huy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题