无法解析私钥:错误:无效的 PEM 格式消息

wic*_*k3d 8 firebase next.js vercel

我正在尝试在 Vercel 上部署一个使用 firebase-admin 的 NEXT JS 应用程序。

\n
import * as firebaseAdmin from \'firebase-admin\';\nimport firebase from \'firebase/app\';\n\nif (!firebaseAdmin.apps.length) {\n  firebaseAdmin.initializeApp({\n    credential: firebaseAdmin.credential.cert({\n      privateKey: process.env.NEXT_PUBLIC_FIREBASE_PRIVATE_KEY,\n\n      clientEmail: process.env.NEXT_PUBLIC_FIREBASE_CLIENT_EMAIL,\n\n      projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,\n    }),\n\n    databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,\n  });\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我将其部署到 vercel 时,环境变量如下:

\n
NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n....\\n-----END PRIVATE KEY-----\\n"\n
Run Code Online (Sandbox Code Playgroud)\n

钥匙

\n

我收到此错误消息。

\n
NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\\n....\\n-----END PRIVATE KEY-----\\n"\n
Run Code Online (Sandbox Code Playgroud)\n

但是npm run build在本地运行构建没有错误。

\n
.env.local\ninfo  - Linting and checking validity of types  \ninfo  - Creating an optimized production build  \ninfo  - Compiled successfully\ninfo  - Collecting page data  \ninfo  - Generating static pages (4/4)\ninfo  - Finalizing page optimization  \n\nPage                                       Size     First Load JS\n\xe2\x94\x8c \xe2\x97\x8b / (466 ms)                             461 B           271 kB\n\xe2\x94\x9c   /_app                                  0 B             270 kB\n\xe2\x94\x9c \xe2\x97\x8b /404 (450 ms)                          526 B           271 kB\n\xe2\x94\x9c \xce\xbb /api/hello                             0 B             270 kB\n\n+ First Load JS shared by all              270 kB\n  \xe2\x94\x9c chunks/framework-a87821de553db91d.js   45 kB\n  \xe2\x94\x9c chunks/main-567f0ec5ceee81fc.js        29.7 kB\n  \xe2\x94\x9c chunks/pages/_app-b443b414c9e8f379.js  195 kB\n  \xe2\x94\x9c chunks/webpack-42cdea76c8170223.js     1.07 kB\n  \xe2\x94\x94 css/966e875c066cf46b.css               5.18 kB\n\n\xce\xbb  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)\n\xe2\x97\x8b  (Static)  automatically rendered as static HTML (uses no initial props)\n
Run Code Online (Sandbox Code Playgroud)\n

我不明白如何解决这个问题,因为它在本地运行并且构建时没有任何错误。

\n

wic*_*k3d 3

我找到了答案。 .env.local可以有这样的值

NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----\n"
Run Code Online (Sandbox Code Playgroud)

但在 vercel 环境变量中添加不带双引号的键""

NEXT_PUBLIC_FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----\n
Run Code Online (Sandbox Code Playgroud)

当您添加密钥时,它应该重新格式化并看起来像这样。您可以console.log在本地设置这些值,如下所示,并将完全相同的值粘贴到 Vercel env 中。

-----BEGIN PRIVATE KEY-----
your
secret
key
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)