了解 Node 中的 TypeError“不是函数”[重复]
Posted
技术标签:
【中文标题】了解 Node 中的 TypeError“不是函数”[重复]【英文标题】:Understanding a TypeError "Not a fucntion" in Node [duplicate] 【发布时间】:2020-10-28 01:08:44 【问题描述】:我环顾四周,虽然这似乎是一个常见错误,但我无法真正找到我做错的答案。
const express = require('express')
const expressGraphQL = require('express-graphql')
const app = express()
app.use('/graphql', expressGraphQL(
graphiql: true
))
app.listen(5000., () => console.log('Server is Running'))
每当我编译时,我都会收到此错误...
app.use('/graphql', expressGraphQL(
^
TypeError: expressGraphQL is not a function
at Object.<anonymous> (C:\Node\Project_GraphQL\server.js:5:21)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
[nodemon] app crashed - waiting for file changes before starting...
我正在尝试在此处和附近跟随此视频,据我所知,我已经逐行复制了它....
https://youtu.be/ZQL7tL2S0oQ?t=565
我误解了什么,做错了什么?
【问题讨论】:
【参考方案1】:如果你使用上一个版本,express-graphql 返回一个对象,在这种情况下你应该使用:
const graphqlHTTP = require('express-graphql')
或在您的代码中
app.use('/graphql', expressGraphQL.graphqlHTTP(
graphiql: true
))
【讨论】:
【参考方案2】:如果您看到 npm 文档 here。 graphqlHTTP
是从模块导出的函数(它使用对象destructring)。
所以你的代码应该如下所示
const express = require('express');
const graphqlHTTP = require('express-graphql');
const app = express();
app.use(
'/graphql',
graphqlHTTP(
graphiql: true,
),
);
app.listen(5000., () => console.log('Server is Running'))
【讨论】:
以上是关于了解 Node 中的 TypeError“不是函数”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
node-lambda - TypeError:处理程序不是函数
获取 TypeError:path.split 不是 Mongoose 中的函数
TypeError:回调不是函数,“node_modules\jsonwebtoken\sign.js:101:14)”
TypeError:vue.openBlock 不是函数,同时使用自定义节点模块中的 vue 组件