После тонны поиска по 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.
Действительно надеюсь, что кто-то имеет представление о том, что я мог бы сделать, чтобы это исправить.