Облачные функции скрыты после загрузки на github? - PullRequest
0 голосов
/ 14 января 2020

Я скачал node.js и создал файлы функций firebase в каталоге сайта (firebase. json, папка функций и другие). Если бы я должен был написать javascript облачные функции внутри файла project / functions / index. js, он не был бы закрытым, когда я загрузил его в свой репозиторий Github для моего сайта c. (thing.github.io)

Итак, как бы я go о вызове облачных функций firebase работал в моем индексе. js на мой веб-сайт c stati без загрузки индекса. js (для сохранять некоторые функции закрытыми)?

Редактировать: Теперь я понимаю, что существуют переменные среды, но как я могу объединить их с веб-сайтом Github Pages с Firebase Admin SDK и облачными функциями?

Как мне загрузить мой проект страниц GitHub и все еще связать мою клиентскую часть с переменными среды? Нужно ли загружать свой индекс. js, содержащий мои облачные функции? Но также не загружает индекс. js не имеет смысла, когда клиент не может видеть функции / данные?

В приведенном ниже комментарии упоминается программное обеспечение под названием Heroku, какова его цель, когда У меня уже есть GitHub и firebase, взаимодействующие с моим веб-сайтом и базой данных?

Также я видел способ использования dotenv для создания файла .env для хранения секретных данных (таких как ключи API) и использования gitignore для предотвращения файл загружается? Будет ли это работать на Github Pages, и если да, сможет ли клиент видеть .env? И если они не могут, может ли веб-сайт клиент-сервер связать его с .env, даже если он не отправлен на Github

1 Ответ

1 голос
/ 14 января 2020

Это хорошее использование переменных окружения . По сути, скажем, у вас был ключ API 12345. И у вас была такая функция:

async function fetchResults() {
    await fetch("myapi.com/lookup?key=12345")
}

Вместо этого вы могли бы сделать:

async function fetchResults() {
    await fetch("myapi.com/lookup?key=${process.env.API_KEY}")
}

Переменная окружения хранится на вашем компьютере, поэтому она никогда не переходит в GitHub, что позволяет вам предоставлять код как открытый исходный код, сохраняя конфиденциальность ваших чувствительных ключей.

Редактировать: Поэтому я перечитал ваш вопрос и вижу, что вы говорите о публикации на страницах GitHub. Главное, на что следует обратить внимание, это то, что пользователь может видеть на стороне клиента . GitHub Pages размещает только «клиентскую» часть вашего приложения. Поэтому, если ваш клиентский (браузерный) веб-сайт выполняет API-вызов к myapi.com/lookup?key=12345, они смогут увидеть его, несмотря ни на что, поскольку его браузер делает запрос, и они могут видеть все, что делает их браузер.

Однако лучше всего написать серверный код для запуска вашего приложения. Для этого вы можете использовать то, что я предложил выше, где вы добавляете переменные окружения на тот сервер, который используете для размещения (например, вы можете легко сделать это с помощью [Zeit Now][2] или Heroku ). Таким образом, вы можете поделиться своим кодом, но переменные среды остаются в секрете на компьютере, на котором выполняется код на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...