gpt-crawler icon indicating copy to clipboard operation
gpt-crawler copied to clipboard

error TS2322

Open sc0h0 opened this issue 2 years ago • 6 comments

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

sc0h0 avatar Feb 23 '24 11:02 sc0h0

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

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

> @builder.io/[email protected] start
> npm run start:dev


> @builder.io/[email protected] start:dev
> cross-env NODE_ENV=development npm run build && node dist/src/main.js


> @builder.io/[email protected] 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

moolchand-danny avatar Mar 07 '24 01:03 moolchand-danny

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

cyberautomate avatar Mar 11 '24 12:03 cyberautomate

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

cyberautomate avatar Mar 11 '24 12:03 cyberautomate

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

RobinJauffret avatar Mar 28 '24 15:03 RobinJauffret

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(),

bhuynhdev avatar Mar 29 '24 14:03 bhuynhdev

Same issues image

guoxin12980 avatar May 28 '24 08:05 guoxin12980