@julian thanks for your reply. The reason why I inject Apollo as a middleware is because of the server integrate document on Apollo website shows that we can use the apollo-server-express package to integrate GraphQL with existing Express server by adding following code: server.applyMiddleware({ app }); // app is from an existing express app Does router will be the express app to be passed to plugins? Because I solved this problem by passing router into .applyMiddleware() method as following changes: const router = params.router; apolloServer.applyMiddleware({ app: router, path: '/api/mygraphql', }); Now, the GraphQL works fine on my NodeBB server ! Hope this can help someone who run into the same problem like me. Although it looks like GraphQL is not popular in NodeBB community .