Как я могу заставить Netlify анализировать очень длинный закрытый ключ, который я помещаю в переменные их среды? - PullRequest
1 голос
/ 31 января 2020

После тонны поиска по inte rnet и даже ТАК, я не могу найти ответ на этот вопрос или даже на кого-нибудь, обращающегося к чему-то похожему. У меня есть закрытый ключ разработчика Google (очень длинный, который содержит символы новой строки), и я получаю сообщение об ошибке «TypeError: Невозможно прочитать свойство« 2 »с нулевым значением», полученное из файла, который пытается проанализировать закрытый ключ. Я думаю, что проблема в том, что закрытый ключ выглядит как ключ S SH, он имеет 1732 символа и несколько символов новой строки. При оценке с символами новой строки он формирует многострочный блок с BEGIN, затем 26 строками по 64 символа в каждой (кроме последних) и END.

REACT_APP_GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvQIB ... c4L+SIi89q1aDDD/o=\n-----END PRIVATE KEY-----\n"

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

Мой код, который захватывает этот ключ:

// google-config.js

module.exports = {
  devCreds: {
    type: process.env.REACT_APP_GOOGLE_TYPE,
    project_id: process.env.REACT_APP_GOOGLE_PROJECT_ID,
    private_key_id: process.env.REACT_APP_GOOGLE_PRIVATE_KEY_ID,
    private_key: process.env.REACT_APP_GOOGLE_PRIVATE_KEY,
    client_email: process.env.REACT_APP_GOOGLE_CLIENT_EMAIL,
    client_id: process.env.REACT_APP_GOOGLE_CLIENT_ID,
    auth_uri: process.env.REACT_APP_GOOGLE_AUTH_URI,
    token_uri: process.env.REACT_APP_GOOGLE_TOKEN_URI,
    auth_provider_x509_cert_url:
      process.env.REACT_APP_GOOGLE_AUTH_PROVIDER_X509_CERT_URL,
    client_x509_cert_url: process.env.REACT_APP_GOOGLE_CLIENT_X509_CERT_URL,
  },
};

и код, который использует ключ ...

const { devCreds } = require('./google-config');

export async function addRow(data) {
  const doc = new GoogleSpreadsheet(formDataDestinationSheet);
  return doc.useServiceAccountAuth(devCreds, error => {
    doc.addRow(1, data, error => {
      if (error) console.log(error);
    });
    if (error) console.log(error);
  });
}

Чтобы быть уверенным, что я получаю частный ключ Я выхожу, когда приложение начинает видеть, что это то, что я ожидаю. Это может быть неумно, но когда вы расстроены, вы попробуете что-нибудь. Очевидно, я получу новый ключ очень скоро.

Итак, вот что я попробовал ... Во всем этом ... двойные кавычки, одинарные кавычки, обратные тики и вообще никаких кавычек , Я также пытался экранировать \ в каждом из приведенных выше сценариев ios, как \\n для каждого символа новой строки. Где-то я читал, что кому-то удалось заменить символы новой строки на подчеркивание (но они имели дело с действительным ключом s sh, так что ... ¯ \ _ (ツ) _ / ¯ ...) Я, очевидно, начинаю gr asp at str aws here.

В большинстве вышеприведенных сценариев ios, это отлично работает на моей коробке. На моем боксе это не сработало с помощью обратных тиков и экранирования символа новой строки. Метод обратных тиков дает мне ту же ошибку, что и я, когда запускаю его в Netlify.

Действительно надеюсь, что кто-то имеет представление о том, что я мог бы сделать, чтобы это исправить.

...