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 => { .......