javascript - Fetch: Argument av typen 'string | undefined' kan inte tilldelas parametern av typen 'RequestInfo'


Jag får följande fel i argumentet "fetchUrl" i fetch-funktionen

Argument av typen 'string | undefined' kan inte tilldelas parametern av typen 'RequestInfo'.

I den här funktionen

let fetchUrl = getBaseUrlNative( process.env.APP_DATA, `/v2/marketing/app/file/${file}?cookies=${cookieSess}&expires=${Date.now()}`)

    await fetch(fetchUrl, { method: 'get' , cache:"no-store" , headers: {
        'Cache-Control': 'no-cache'
      }})
         .then(res => res.blob())
         .then(res => {  .......

getBaseUrlNative är

export const getBaseUrlNative = (eUrl : string | undefined, ext : string | undefined) => {
    try {
        if (!eUrl) throw new Error("Error .")
        return ext ? eUrl+ext : eUrl;
    } catch (err) {
        console.log(err)
    }
}

Svar #1

Det är för att din miljövariabel kommer som odefinierad innan du använder den.

Använd typförsäkran med nyckelordet:

som

Så något i stil med:

getBaseUrlNative( process.env.APP_DATA as string, ...)

Detta borde fungera helt fint.

redigera/uppdatera:

getBaseUrlNative( process.env.APP_DATA!, ...)

detta borde också fungera. Genom att inkludera !, säger vi att vi vet att värdet inte skulle vara odefinierat när sidan renderas, så vi kan ignorera varningen.

Svar #2

Använd any-datatypen i fetch-funktionen för att inte tillåta typkontroll.

let fetchUrl = getBaseUrlNative( process.env.APP_DATA, `/v2/marketing/app/file/${file}?cookies=${cookieSess}&expires=${Date.now()}`)

    await fetch(<any>fetchUrl, { method: 'get' , cache:"no-store" , headers: {
        'Cache-Control': 'no-cache'
      }})
         .then(res => res.blob())
         .then(res => {  .......

Relaterade artiklar