next.js 当'projectId'来自环境变量时,Firebase配置中断

2ledvvac  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(121)

我的Firebase配置对象和Vercel环境变量遇到了一个 * 非常 * 奇怪的问题。
我可以使用Vercel环境变量构建整个Firebase配置对象,但如果使用projectId值的环境变量,则会破坏整个配置。
我的配置遵循以下格式:

const firebaseConfig = {
    apiKey: `${process.env.FIREBASE_apiKEY}`,
    authDomain: `${process.env.FIREBASE_authDomain}`,
    projectId: "my-project-id-here",
    storageBucket: `${process.env.FIREBASE_storageBucket}`,
    messagingSenderId: `${process.env.FIREBASE_messagingSenderId}`,
    appId: `${process.env.FIREBASE_appId}`,
    measurementId: `${process.env.FIREBASE_measurementId}`
};

然后,我使用该对象初始化Firebase,如下所示:

const app = initializeApp(firebaseConfig)

上面的方法是可行的,但是如果我将projecId的值更改为

`${process.env.FIREBASE_projectId}`

为了匹配其他的,我得到FirebaseError: Failed to get document because the client is offline.
我已经验证了process.env.FIREBASE_projectId的值在.env文件中是正确的,并且该值在firebaseConfig中也是正确的,但唯一一次没有得到错误的情况是当我将该值硬编码为字符串时。

ndasle7k

ndasle7k1#

如果使用的是nextjs,请为环境变量使用NEXT_PUBLIC前缀

const firebaseConfig = {
   apiKey: `${process.env.NEXT_PUBLIC_FIREBASE_APIKEY}`,
   authDomain: `${process.env.NEXT_PUBLIC_FIREBASE_AUTHDOMAIN}`,
   projectId: `${process.env.NEXT_PUBLIC_FIREBASE_PROJECTID}`,
   storageBucket: `${process.env.NEXT_PUBLIC_FIREBASE_STORAGEBUCKET}`,    
   messagingSenderId:`${process.env.NEXT_PUBLIC_FIREBASE_MESSAGINGSENDERID}`,
   appId: `${process.env.NEXT_PUBLIC_FIREBASE_APPID}`,
   measurementId: `${process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENTID}`
     };

相关问题