我想导出ApolloServer要稍后在测试套件中导入的函数,或者只是在index.ts文件中导入。
工作代码:
// src/index.ts
;(async () => {
const app = express()
await createConnections()
const apolloServer = new ApolloServer({
schema: await buildSchema({
resolvers: [HelloWorldResolver, MovieResolver],
}),
context: ({ req, res }) => ({ req, res }),
})
apolloServer.applyMiddleware({ app, cors: false })
app
.listen({ port: ENVIRONMENT.port, host: ENVIRONMENT.host }, () => {
console.log(
`Server ready at http://${ENVIRONMENT.host}:${ENVIRONMENT.port}/graphql`
)
})
.on('error', function (error) {
console.log(`Failed starting server: ${error}`)
})
})()
我试图将其提取到一个单独的文件中:
// src/apolloServer.ts
export const apolloServer = (async () => {
return new ApolloServer({
schema: await buildSchema({
resolvers: [HelloWorldResolver, MovieResolver],
}),
context: ({ req, res }) => ({ req, res }),
})
})()
并消费它:
// src/index.ts
import { apolloServer } from './apolloServer'
apolloServer.applyMiddleware({ app, cors: false })
抛出的错误是:
(node:13848) UnhandledPromiseRejectionWarning: TypeError: apolloServer_1.apolloServer.applyMiddleware is not a function
如何导出和导入此功能?