BuilderIO / gpt-crawler

Crawl a site to generate knowledge files to create your own custom GPT from a URL
https://www.builder.io/blog/custom-gpt
ISC License
18.14k stars 1.88k forks source link

error TS2322 #151

Open sc0h0 opened 4 months ago

sc0h0 commented 4 months ago

Anyone receiving this error message? Trying to run on Windows.

src/core.ts:87:44 - error TS2322: Type '(data: ReadonlyDeep<Dictionary | Dictionary[]>, datasetIdOrName?: string | undefined) => Promise<void>' is not assignable to type '(args_0: any, ...args_1: unknown[]) => Promise<void>'.
  Types of parameters 'datasetIdOrName' and 'args_1' are incompatible.
    Type 'unknown' is not assignable to type 'string | undefined'.

87           await config.onVisitPage({ page, pushData });
                                              ~~~~~~~~

  src/config.ts:66:9
    66         pushData: z.function().args(z.any()).returns(z.promise(z.void())),
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    The expected type comes from property 'pushData' which is declared here on type '{ page: Page; pushData: (args_0: any, ...args_1: unknown[]) => Promise<void>; }'

Found 1 error in src/core.ts:87

This is the config I am using to test:

image

moolchand-danny commented 3 months ago

Hey, also having this issue. Any updates on a potential fix?

root@dev-server-ubuntu:/opt/gpt-crawler# npm start

> @builder.io/gpt-crawler@1.4.0 start
> npm run start:dev

> @builder.io/gpt-crawler@1.4.0 start:dev
> cross-env NODE_ENV=development npm run build && node dist/src/main.js

> @builder.io/gpt-crawler@1.4.0 build
> tsc

src/core.ts:88:46 - error TS2322: Type '(data: ReadonlyDeep<Dictionary | Dictionary[]>, datasetIdOrName?: string | undefined) => Promise<void>' is not assignable to type '(args_0: any, ...args_1: unknown[]) => Promise<void>'.
  Types of parameters 'datasetIdOrName' and 'args_1' are incompatible.
    Type 'unknown' is not assignable to type 'string | undefined'.

88             await config.onVisitPage({ page, pushData });
                                                ~~~~~~~~

  src/config.ts:66:9
    66         pushData: z.function().args(z.any()).returns(z.promise(z.void())),
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    The expected type comes from property 'pushData' which is declared here on type '{ page: Page; pushData: (args_0: any, ...args_1: unknown[]) => Promise<void>; }'

Found 1 error in src/core.ts:88
cyberautomate commented 3 months ago

Same error here, the newest build seems to be broken.

cyberautomate commented 3 months ago

Anyone receiving this error message? Trying to run on Windows.

src/core.ts:87:44 - error TS2322: Type '(data: ReadonlyDeep<Dictionary | Dictionary[]>, datasetIdOrName?: string | undefined) => Promise<void>' is not assignable to type '(args_0: any, ...args_1: unknown[]) => Promise<void>'.
  Types of parameters 'datasetIdOrName' and 'args_1' are incompatible.
    Type 'unknown' is not assignable to type 'string | undefined'.

87           await config.onVisitPage({ page, pushData });
                                              ~~~~~~~~

  src/config.ts:66:9
    66         pushData: z.function().args(z.any()).returns(z.promise(z.void())),
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    The expected type comes from property 'pushData' which is declared here on type '{ page: Page; pushData: (args_0: any, ...args_1: unknown[]) => Promise<void>; }'

Found 1 error in src/core.ts:87

This is the config I am using to test:

image

v1.3.0 seems to work fine for me. https://github.com/BuilderIO/gpt-crawler/archive/refs/tags/v1.3.0.zip

RobinJauffret commented 3 months ago

I have the same issue if I update the dependancies with a "npm update/upgrade", otherwise, it works well.

bhuynhdev commented 3 months ago

Can confirm that this also happens to me on latest version. I have a temporary fix; unsure if this is correct though because so many .any().

I found out that this happens because the Zod schema for the Config file (in the config.ts file was slightly wrong). Specifically, the pushData function that is passed in await config.onVisitPage({ page, pushData }) comes from PlaywrightCrawler and should have 2 arguments.

Therefore, I fixed it in the config.ts file so that it also reflects the "pushData function have 2 args" in the Config type:

  onVisitPage: z
    .function()
    .args(
      z.object({
        page: Page,
        pushData: z.function().args(z.any(), z.any().optional()).returns(z.promise(z.void())), // Two function args
      }),
    )
    .returns(z.promise(z.void()))
    .optional(),
guoxin12980 commented 1 month ago

Same issues

image