Coder Social home page Coder Social logo

bug: inference error when creating OpenApiDocument. The inferred type of 'openApiDocument' cannot be named without a reference to '.pnpm/[email protected]/node_modules/openapi-types'. This is likely not portable. A type annotation is necessary.ts (2742) about trpc-openapi HOT 8 OPEN

MiniSuperDev avatar MiniSuperDev commented on June 3, 2024 1
bug: inference error when creating OpenApiDocument. The inferred type of 'openApiDocument' cannot be named without a reference to '.pnpm/[email protected]/node_modules/openapi-types'. This is likely not portable. A type annotation is necessary.ts (2742)

from trpc-openapi.

Comments (8)

MaximilianGaedig avatar MaximilianGaedig commented on June 3, 2024 1

I have a similar problem, when I try to build my api library form another package using tsup I get the error: ../../node_modules/.pnpm/@[email protected]/node_modules/@trpc/server/src/core/initTRPC.ts(64,3): error TS2742: The inferred type of 'create' cannot be named without a reference to '.pnpm/@[email protected]/node_modules/@trpc/server/src'. This is likely not portable. A type annotation is necessary.

When commenting the openapi meta line:

const t = initTRPC
  // .meta<OpenApiMeta>() // With this line commented the code compiles
  .context<typeof createTRPCContext>().create({
    transformer: superjson,
    errorFormatter({ shape, error }) {
      return {
        ...shape,
        data: {
          ...shape.data,
          zodError:
            error.cause instanceof ZodError ? error.cause.flatten() : null,
        },
      };
    },
  });

from trpc-openapi.

IsaiahByDayah avatar IsaiahByDayah commented on June 3, 2024

@MaximilianGaedig Have you found any workaround for this? Im running into the same issue trying to add trpc-openapi to my api package in a pnpm+turborepo codebase

from trpc-openapi.

MaximilianGaedig avatar MaximilianGaedig commented on June 3, 2024

Hey @IsaiahByDayah, yea, we're using it in production for a while already, we've just casted it to OpenApiRouter

import { type OpenApiRouter, generateOpenApiDocument } from 'trpc-openapi';

const openApiDocument = generateOpenApiDocument((openApiRouter as OpenApiRouter),{...})

from trpc-openapi.

IsaiahByDayah avatar IsaiahByDayah commented on June 3, 2024

Hmmm, @MaximilianGaedig this fixed your issue when adding .meta<OpenApiMeta>() to the initTRPC chain? Was there any other exports you had to do to get that piece working? I never actually ran into any issues with generateOpenApiDocument, but even just adding the meta call throws the "The inferred type of 'create' cannot be named ..." error when I try to build

from trpc-openapi.

IsaiahByDayah avatar IsaiahByDayah commented on June 3, 2024

Would you be able to share a link to your codebase? Happy to try and dig through the source myself to figure out if theres anything different between setups

from trpc-openapi.

MaximilianGaedig avatar MaximilianGaedig commented on June 3, 2024

Hmmm, @MaximilianGaedig this fixed your issue when adding .meta<OpenApiMeta>() to the initTRPC chain? Was there any other exports you had to do to get that piece working? I never actually ran into any issues with generateOpenApiDocument, but even just adding the meta call throws the "The inferred type of 'create' cannot be named ..." error when I try to build

I just left that commented, about the meta calls, I have not had the same happen

Would you be able to share a link to your codebase? Happy to try and dig through the source myself to figure out if theres anything different between setups

Can't do that, sorry, it's a proprietary product

a part of my tsconfig.json which might help:

{
  "compilerOptions": {
    "incremental": false,
    "module": "node16",
    "moduleResolution": "node16"
  },
  "include": [
    "src/index.ts"
  ],
  "exclude": [
    "node_modules",
    "@trpc/server"
  ]
}

from trpc-openapi.

IsaiahByDayah avatar IsaiahByDayah commented on June 3, 2024

Oh, strange 🤔. And you guys are able to still get type inference when you set the meta value for procedures? ie:

export const appRouter = t.router({
  sayHello: t.procedure
    .meta({ openapi: { method: 'GET', path: '/say-hello' } }) // 👈 this line here
    .input(z.object({ name: z.string() }))
    .output(z.object({ greeting: z.string() }))
    .query(({ input }) => {
      return { greeting: `Hello ${input.name}!` };
    });
});

from trpc-openapi.

MaximilianGaedig avatar MaximilianGaedig commented on June 3, 2024

Oh, strange 🤔. And you guys are able to still get type inference when you set the meta value for procedures? ie:

export const appRouter = t.router({

  sayHello: t.procedure

    .meta({ openapi: { method: 'GET', path: '/say-hello' } }) // 👈 this line here

    .input(z.object({ name: z.string() }))

    .output(z.object({ greeting: z.string() }))

    .query(({ input }) => {

      return { greeting: `Hello ${input.name}!` };

    });

});

we might be not using a part of this, well we have those meta tags for sure, but we don't use the types from that directly, we generate this openapi file and then use it in another package where we have an openapi-fetch client from that

from trpc-openapi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.