簡體   English   中英

如何在 Nuxt Config 中使用 Firebase 環境變量

[英]How to use Firebase Environment Variables in Nuxt Config

我正在嘗試將 Firebase Creds 從我的 Nuxt 配置文件中分離出來。 但它是說NuxtServerError Your API key is invalid, please check you have copied it correctly. 當我將我的憑據直接用於我的 nuxt 配置(沒有環境變量)時,它工作正常。

我正在使用@nuxtjs/firebase 模塊,這是我的配置: firebase ssr/universal auth documentation

  modules: [
    // Doc: https://axios.nuxtjs.org/usage
    '@nuxtjs/axios',
    // Doc: https://github.com/nuxt-community/dotenv-module
    '@nuxtjs/dotenv',
    '@nuxtjs/firebase',
    '@nuxtjs/pwa',
  ],

  firebase: {
    config: {
      apiKey: process.env.apiKey,
      authDomain: process.env.authDomain,
      databaseURL: process.env.databaseURL,
      projectId: process.env.projectId,
      storageBucket: process.env.storageBucket,
      messagingSenderId: process.env.messagingSenderId,
      appId: process.env.appId,
      measurementId: process.env.measurementId
    },
    services: {
      auth: {
        ssr: true
      }
    }
  },
  pwa: {
    // disable the modules you don't need
    meta: false,
    icon: false,
    // if you omit a module key form configuration sensible defaults will be applied
    // manifest: false,

    workbox: {
      importScripts: [
        // ...
        '/firebase-auth-sw.js'
      ],
      // by default the workbox module will not install the service worker in dev environment to avoid conflicts with HMR
      // only set this true for testing and remember to always clear your browser cache in development
      dev: false
    }
  }

我已將所有憑據存儲在我的應用程序的.env文件中(帶引號)。

apiKey="my_key"
authDomain="my_domain"
databaseURL="my_db_url"
projectId="my_project_id"
storageBucket="my_storage_bucket"
messagingSenderId="my_sender_id"
appId="my_app_id"
measurementId="my_measurement_id"

有什么方法可以將我的憑據與 nuxt 配置文件分開(我正在我的 github 上提交我的 nuxt 配置文件)。

PS:我的環境變量可以使用process.env.apikey等從我的應用程序組件進行控制台記錄。 我還安裝了@nuxtjs/dotenv package。

這是一個@nuxtjs/dotenv問題(我認為)。

關於nuxt.config.js 文檔中的 Using.env文件,在這種情況下,您應該直接使用dotenv模塊而不是@nuxtjs/dotenv

nuxt.config.ts示例

import dotenv from 'dotenv'

let path =
  process.env.NODE_ENV === 'production'
   ? '.env'
   : '.env.' + process.env.NODE_ENV

dotenv.config({path})

export default {
 ....
 // Now, you are able to use process.env.<property_from_dotenv>
 env: {
  apiKey: process.env.apiKey,
  authDomain: process.env.authDomain,
  databaseURL: process.env.databaseURL,
  projectId: process.env.projectId,
  storageBucket: process.env.storageBucket,
  messagingSenderId: process.env.messagingSenderId,
  appId: process.env.appId,
  measurementId: process.env.measurementId
 },
}

nuxt.config.js示例

const dotenv = require('dotenv');

let path =
  process.env.NODE_ENV === 'production'
   ? '.env'
   : '.env.' + process.env.NODE_ENV

dotenv.config({path})

Nuxt 有自己的烘焙環境變量處理。 閱讀文檔中的publicRuntimeConfig: {}privateRuntimeConfig {} 你不再需要dotenv依賴。

我也在這個問題上苦苦掙扎。 我使用相同的設置。

添加:

require('dotenv').config()

到 nuxt.config.js 文件的頂部。 這允許配置訪問您的 local.env 文件。

暫無
暫無

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

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