Heroku Logs -TypeError: Невозможно прочитать свойство 'replace' из неопределенного - PullRequest
0 голосов
/ 22 октября 2019
npm v6.12.0
node v10.16.0

Я использую Firebase SDK для моего приложения. У меня никогда не было этой проблемы, пока я не изменил всю информацию о моем сервере сегодня. Это журналы ошибок Heroku, которые я получаю, когда пытаюсь получить удаленный доступ к коду через мое приложение

TypeError: Невозможно прочитать свойство 'replace' из неопределенного

Я запускаю $ heroku logs --app myAppName:

2019-10-21T21:07:12.988431+00:00 app[web.1]: privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
2019-10-21T21:07:12.988433+00:00 app[web.1]: ^
2019-10-21T21:07:12.988435+00:00 app[web.1]: 
2019-10-21T21:07:12.988436+00:00 app[web.1]: TypeError: Cannot read property 'replace' of undefined

Но когда я запускаю node app.js или локально из терминала, все работает нормально. Также, когда я запускаю npm start из терминала, все работает нормально. В чем может быть причина этой проблемы?

Вот код:

const admin = require("firebase-admin");
admin.initializeApp({
  credential: admin.credential.cert({
    projectId: process.env.FIREBASE_PROJECT_ID,
    privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
    clientEmail: process.env.FIREBASE_CLIENT_EMAIL
  }),
  databaseURL: process.env.FIREBASE_DATABASE_URL,
  databaseAuthVariableOverride: {
    uid: process.env.MY_CUSTOM_TOKEN
  }
});

И внутри моего .env файла, который я добавил в .gitignore

FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----xxxxx\n-----END PRIVATE KEY-----\n

Я также пытался:

// removed the .replace(/\\n/g, '\n')
privateKey: process.env.FIREBASE_PRIVATE_KEY

и в файле .env:

// I added quotes
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----xxxxx\n-----END PRIVATE KEY-----\n"

Что не может прочитать свойство 'replace' из неопределенного среднего значения? Itне может быть значением FIREBASE_PRIVATE_KEY, потому что когда я запускаю node app.js или npm start, я получаю ошибки, которых нет.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Я работал над этим часами. Я перепробовал все виды вещей, но в конце концов я просто удалил всю папку, содержащую весь код, и удалил приложение из Heroku, после того как я переделал все с нуля, теперь это работает (со вчерашнего дня я делал это более 10 раз).

Я читал, что иногда серверы Heroku не работают, и, возможно, это из-за того, что я на свободном уровне, вызывает некоторое внутреннее отставание. Какой бы ни была причина, это странно работает сейчас.

0 голосов
/ 22 октября 2019

Я подозреваю, что когда вы запускаете локально (на firebase serve), переменные окружения автоматически устанавливаются Firebase. На Heroku это не так. Вы можете загрузить их через файл .env, но лучшим способом было бы использовать конфигурационные переменные Heroku.

Вы можете установить конфигурационные переменные (для FIREBASE_PRIVATE_KEY, FIREBASE_PROJECT_ID и т. Д.) Из Heroku. Панель приборов: https://devcenter.heroku.com/articles/config-vars#using-the-heroku-dashboard

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