Open2

Honoにgraphql-yogaをマウントする

Nakano as a ServiceNakano as a Service

これでできた

import { serve } from '@hono/node-server';
import SchemaBuilder from '@pothos/core';
import { createYoga } from 'graphql-yoga';
import { Hono } from 'hono';

const builder = new SchemaBuilder({});

builder.queryType({
  fields: (t) => ({
    healthCheck: t.string({
      resolve: () => {
        return 'Ok';
      },
    }),
  }),
});

const schema = builder.toSchema();

const app = new Hono();

const yoga = createYoga({
  graphqlEndpoint: '/',
  fetchAPI: {
    fetch,
    Request,
    ReadableStream,
    Response,
  },
  schema,
});

app.mount('/graphql', yoga);

serve(app, (info) => {
  console.log(`Listening on http://localhost:${info.port}/graphql`);
});
Nakano as a ServiceNakano as a Service

最初素朴に作ると以下のようなエラーが出たが、createYogafetchAPIオプションを渡すことで解決できた。

TypeError: The "readableStream" argument must be an instance of ReadableStream. Received an instance of bound PonyfillReadableStream
    at new NodeError (node:internal/errors:399:5)
    at Object.newStreamReadableFromReadableStream (node:internal/webstreams/adapters:482:11)
    at Function.Readable.fromWeb (node:internal/streams/readable:1403:27)
    at Server.<anonymous> (/Users/nakanoasaservice/repo/node_modules/.pnpm/@hono+node-server@1.2.0/node_modules/@hono/node-server/dist/listener.js:71:75)
    at processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'ERR_INVALID_ARG_TYPE'
}

https://github.com/honojs/node-server/issues/77