1. 程式人生 > 其它 >Vite 配置環境變數 import.meta.env 時出現 ts 錯誤

Vite 配置環境變數 import.meta.env 時出現 ts 錯誤

問題描述:

使用 Vite 2.x 構建專案時,在 .evn 檔案中建立了自定義環境變數VITE_BASE_URL

但在專案中使用時出現 Typescript 錯誤:

分析原因:

這是因為沒有引入 ImportMeta 的型別宣告檔案,Vite 有提供vite/client.d.ts 來做型別宣告,在 tsconfig.json 中引入即可

解決方案:

在 tsconfig.json 中新增以下配置:

{
  "compilerOptions": {
    "types": ["vite/client"]
  }
}

然後就能推斷出自定義環境變數的型別為: string | boolean | undefined

如過可以確定這個變數為 string 型別,可以加型別斷言 as string,但更合適的做法是建立新的型別宣告檔案 env.d.ts

/// <reference types="vite/client" />

interface ImportMetaEnv {
  readonly VITE_BASE_URL: string;
}

interface ImportMeta {
  readonly env: ImportMetaEnv;
}

可以將 env.d.ts 檔案放到 src 目錄下,無需再做別的配置,ts 就會引入這個檔案

如果放到別的地方,比如根目錄,就需要調整 tsconfig.json 的配置

{
  "compilerOptions": {
    "types": ["./env"]
  }
}