【发布时间】:2020-11-25 03:40:54
【问题描述】:
我已经为此研究了至少一个小时,但到目前为止我很困惑。也许我不理解文档或媒体文章。但是,据我了解,NextJS(我已经安装了最新版本)提供了一个内置的环境变量解决方案。所以,不需要dotenv 包。
由于设置了 NextJS,我需要做的就是创建一个 env.local 来存储我的 API_KEY 和其他敏感信息。然后,一旦我保存了更新后的文件,我应该能够访问${process.env.API_KEY} 并可以在我的代码中的任何位置访问该值。
如果上述陈述属实,我无法让它发挥作用。
就我而言,我使用环境变量连接到 Firebase。在下面的代码中,它正在被实现。我收到 500 格式错误:
Connection GRPC stream error. Code: 3 Message: 3 INVALID_ARGUMENT:
Project id parakeat-a1-7706, is malformed: it either contains invalid
characters or is too long. Look at https://cloud.google.com
/resource-manager/docs/creating-managing-projects#identifying_projects
for instructions in how to get a project's id.
import * as firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
import 'firebase/storage';
import 'firebase/analytics';
const config = {
apiKey: process.env.FIREBASE_API_KEY,
authDomain: process.env.FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.FIREBASE_DATABASE_URL,
projectId: process.env.FIREBASE_PROJECT_ID,
storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.FIREBASE_APP_ID,
measurementId: process.env.FIREBASE_MEASUREMENT_ID,
};
// Initialize Firebase
try {
firebase.initializeApp(config);
} catch (err) {
// we skip the "already exists" message which is
// not an actual error when we're hot-reloading
if (!/already exists/.test(err.message)) {
console.error('Firebase initialization error', err.stack);
}
}
// const firebaseAnalytics = firebase.analytics();
const firebaseStorage = firebase.storage();
const firebaseFirestore = firebase.firestore();
export { firebaseStorage, firebaseFirestore };
上面显示的ID是正确的,那么有什么问题吗?为什么如果我直接把实际值放入并跳过它成功连接的process.env?
【问题讨论】: