@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 .