Я ковыряюсь с этим как минимум час и пока что в тупике. Возможно, я не понимаю документы или статьи о среде. Но, насколько я понимаю, Next JS (у меня установлена последняя версия) предоставляет встроенное решение для переменных env. Таким образом, нет необходимости в пакете dotenv
.
Поскольку Next JS настроен, все, что мне нужно сделать, это создать env.local
для хранения моего API_KEY и другой конфиденциальной информации. Затем, как только я сохраню этот обновленный файл, я должен иметь доступ к ${process.env.API_KEY}
и иметь доступ к этому значению в любом месте моего кода.
Если приведенные выше утверждения верны, я ' m не могу заставить это работать.
В моем случае я использую переменные среды для подключения к 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 };
Идентификатор указан правильно, так что же не так? Почему, если я помещаю фактическое значение напрямую и пропускаю process.env, он успешно подключается?