Firebase Environmental Config - Добавлены косые черты в private_key_id - PullRequest
0 голосов
/ 05 ноября 2018

Цель

Я обновляю ключи service_account и сохраняю их как переменные среды Firebase.

Error

Когда я бегу firebase deploy --only functions я вижу:

Silver-Sliver:Issy dchaddportwine$ firebase deploy --only functions

=== Deploying to 'development-is'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Error occurred while parsing your function triggers.

Error: Failed to parse private key: Error: Invalid PEM formatted message.

Выпуск

Обновление с помощью firebase functions:config:set добавляет дополнительные \ символы в строку. Это то, что я вижу в терминале после применения :set к private_key_id. Смотрите дополнительные обратные слеши, где \n становится \\n?

Silver-Sliver:Issy dchaddportwine$ firebase functions:config:set service_account.private_key_id="-----BEGIN PRIVATE KEY-----\nMIIE...L5A==\n-----END PRIVATE KEY-----\n"
✔  Functions config updated.

Please deploy your functions for the change to take effect by running firebase deploy --only functions

Silver-Sliver:Issy dchaddportwine$ firebase functions:config:get
{
  "service_account": {
    "private_key_id": "-----BEGIN PRIVATE KEY-----\\nMIIE...L5A==\\n-----END PRIVATE KEY-----\\n",

Вопрос

Является ли это добавление косой черты ошибкой или это ошибка пользователя с моей стороны. Должен ли я обновлять private_key_id по-другому? Как мне это решить?

1 Ответ

0 голосов
/ 06 ноября 2018

TLDR : Обернуть значение ключа в одинарные кавычки и префикс $ для специальной обработки.

Гипотеза 1

Выход из новых строк выполняется программой оболочки.

Тест 1

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

> echo "console.log(process.argv)" > shell-args.js

Run

> node shell-args.js x="Always\nEscape"

[ '/Users/alẹ́tilẹ́/.nvm/versions/node/v9.10.1/bin/node',
  '/Users/alẹ́tilẹ́/Tests/shell-args.js',
  'x=Always\\nEscape' ]

Гипотеза 2

Конкатенация и печать файла в качестве ввода оставляет аргумент оболочки как есть.

echo "Always\nEscape" > always_escape

Тест 2

Run

> node shell-args.js x="$(< always_escape)"

или

> node shell-args.js x="`< always_escape`"

[ '/Users/alẹ́tilẹ́/.nvm/versions/node/v9.10.1/bin/node',
  '/Users/alẹ́tilẹ́/Tests/shell-args.js',
  'x=Always\nEscape' ]

Гипотеза 3

Новые строки получают специальную обработку при использовании расширения ANSI C.

Из man bash

Слова вида $ 'string' обрабатываются специально. Слово расширяется до строка с символами, экранированными обратной косой чертой, замененными в соответствии с Стандарт ANSI C ... Расширенный результат заключен в одинарные кавычки, как если бы знак доллара отсутствовал.

Тест 3

Run

> node shell-args.js x=$'Always\nEscape'

[ '/Users/alẹ́tilẹ́/.nvm/versions/node/v9.10.1/bin/node',
  '/Users/alẹ́tilẹ́/Tests/shell-args.js',
  'x=Always\nEscape' ]

Заключение

Обернуть значение ключа в одинарные кавычки и префикс с $ для специальной обработки.

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