Firebase를 프로젝트 연동하기 위해 json 파일을 내려받을 수 있습니다.
주로 해당 json 파일을 보안적인 문제로 그대로 올리지 않고, .env파일에 설정을 하고 사용을 합니다.
최근 배포 시에 private key
관련되서 에러가 났는데, 평소 사용했던 방법으로 해결이 되지 않았습니다.
관련 검색 시 다양한 에러 해결방법이 존재하나, 환경 별로 해결되는 방법이 다른 것 같아 이번에 시도했던 여러 방법들을 정리하고자 합니다.
💡 참고사항
Azure App Service
에서Next.js
Typescript
를 사용한 프로젝트 였습니다.
local에서 정상 실행되던 프로젝트가 배포시에 failed to parse private key: Error: Invalid PEM formatted message
에러 메세지를 발생하면서 Firebase 연동이 되지 않았습니다.
Firebase의 private key
는 아래와 같이 \n를 여러개 가지고 있는 key 값입니다.
-----BEGIN PRIVATE KEY-----\nMIIEabcdefu......Eh0SQ==\n-----END PRIVATE KEY-----\n
에러가 발생하는 원인은 key가 배포 시에 \n
즉 개행이 적용이 되지 않아서 발생한다고 파악하였습니다.
실제 아래 로그와 같이 개행이 적용안된 것을 볼 수 있습니다.
💡 아래 나온 해결방법들은 일부 환경에서는 안될 수도 있으니, 참고부탁드립니다.
```jsx
process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n');
process.env.FIREBASE_PRIVATE_KEY.replace(/\n/g, '\n');
process.env.FIREBASE_PRIVATE_KEY.replace(/\n/gm, '\n');
process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/gm, '\n');
```
```jsx
Buffer.from(process.env.FIREBASE_PRIVATE_KEY).toString();
```
```jsx
JSON.parse(process.env.FIREBASE_PRIVATE_KEY);
```
https://github.com/gladly-team/next-firebase-auth#get-started
https://firebase.google.com/docs/reference/js/v8/firebase#initializeapp
https://github.com/gladly-team/next-firebase-auth/discussions/95