Использование закрытого ключа в файле .env - PullRequest
3 голосов
/ 01 апреля 2019

У меня есть многострочный закрытый ключ в файле gatsby .env:

GATSBY_GOOGLE_CLIENT_ID="12345"
GATSBY_GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nflkdflkdf...\n-----END PRIVATE KEY-----"

В моем файле конфигурации gatsby у меня есть:

module.exports = {
    resolve: 'gatsby-source-google-sheets',
    options: {
        credentials: {
            "type": "service_account",
            "private_key": process.env.GATSBY_GOOGLE_PRIVATE_KEY,
            "client_id": process.env.GATSBY_GOOGLE_CLIENT_ID
        }
    }
}

client_id отлично работаетпотому что это просто строка из одной строки, но private_key не работает, предположительно потому, что она состоит из нескольких строк.

Есть ли способ обойти это?

Спасибо

Ответы [ 4 ]

3 голосов
/ 01 апреля 2019

Вы можете использовать string.replace с регулярным выражением, как показано ниже, чтобы снова экранировать символы \ n:

"private_key": process.env.GATSBY_GOOGLE_PRIVATE_KEY.replace(/\\n/g, '\n'),
2 голосов
/ 02 апреля 2019

Оказывается, путь к моему .env был неверным. По некоторым причинам другие ключи работали, но закрытый ключ не был.

Правильная настройка:

require("dotenv").config({
    path: `./.env.${process.env.NODE_ENV}`,
});
const private_key = process.env.GATSBY_GOOGLE_PRIVATE_KEY.replace(/\\n/g, '\n');

module.exports = {
    resolve: 'gatsby-source-google-sheets',
    options: {
        credentials: {
            "private_key": private_key,
        }
    }
}

1 голос
/ 02 апреля 2019

Вы должны загрузить переменные env в gatsby. Самый простой способ - использовать dotenv:

Установка:

yarn add -D dotenv # or npm install -D dotenv

Тогда в вашем gatsby-config.js:

require('dotenv').config();

module.exports = {
  plugins: [ ... ]
}

Если имя вашего файла отличается от .env или вы храните его в другом месте, вы можете передать путь:

require('dotenv').config({
  path: 'path/to/env/file'
});
0 голосов
/ 01 апреля 2019

Вставьте в файл pem, а затем направьте его в .env с заменами

echo "export test_key=\"`sed -E 's/$/\\\n/g' ./gitbu.2018-03-23.private-key.pem`\"" >> .env
...