簡體   English   中英

將 firebase 配置存儲在 .env 文件中

[英]Storing firebase config in .env files

我有一個 Sveltekit 項目,我在其中使用 firebase 進行身份驗證。 我將包含 apiKey 和 authDomain 等配置參數的 firebase.js 文件存儲在 \src\lib 文件夾中。 我將 apiKey 值存儲在項目根目錄中的 .env 文件中,並使用 process.env.API_KEY 加載相同的值。 但是,當我執行 npm run build 時,我在瀏覽器控制台中收到錯誤 - “未定義進程”。 我嘗試了以下方法,但它們似乎都不起作用 -

方法 1 -

import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'
import { config } from 'dotenv'

config()

const firebaseConfig = {
  apiKey: process.env.API_KEY,
  authDomain: process.env.AUTH_DOMAIN,
}

const app = initializeApp(firebaseConfig)
const auth = getAuth(app)

export default auth

方法 2 -

在這里,我使用了通過另一個 Stackoverflow 帖子找到的 env-cmd 庫。 下面是更新的代碼

import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'

const firebaseConfig = {
  apiKey: process.env['API_KEY'],
  authDomain: process.env['AUTH_DOMAIN'],
}

const app = initializeApp(firebaseConfig)
const auth = getAuth(app)

export default auth

我還更新了 package.json 中的腳本,如下所示 -

"scripts": {
        "dev": "env-cmd vite dev",
        "build": "env-cmd vite build",
        "package": "svelte-kit package",
        "preview": "vite preview",
        "prepare": "svelte-kit sync"
    }

這兩種方法似乎都不起作用,我仍然得到相同的錯誤,即“未定義進程”。 甚至我在 Github 上查看的其他一些存儲庫也將 apiKey 硬編碼在配置文件中,這顯然是一種不好的做法,即使對於業余項目也是如此。

關於如何通過 .env 文件合並 firebase apiKey 的任何想法?

來自firebase 文檔

與通常使用 API 密鑰的方式不同,Firebase 服務的 API 密鑰不用於控制對后端資源的訪問; 這只能通過 Firebase 安全規則(控制哪些用戶可以訪問資源)和 App Check(控制哪些應用可以訪問資源)來完成。

通常,您需要嚴格保護 API 密鑰(例如,通過使用保管庫服務或將密鑰設置為環境變量); 但是, Firebase 服務的 API 密鑰可以包含在代碼或簽入的配置文件中。

你的.env文件應該有像VITE_SECURE_API_KEY=API-KEY這樣的變量,你可以使用import.meta.env.VITE_SECURE_API_KEY在你的客戶端應用程序中使用它們。

dotenv使用 node-adapter 在服務器端為 sveltekit 工作,firebase-admin 包也僅在節點環境中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM