【问题标题】:Failed to parse private key: Error: Invalid PEM formatted message无法解析私钥:错误:无效的 PEM 格式消息
【发布时间】:2022-06-26 00:47:40
【问题描述】:

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

import * as firebaseAdmin from 'firebase-admin';
import firebase from 'firebase/app';

if (!firebaseAdmin.apps.length) {
  firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert({
      privateKey: process.env.NEXT_PUBLIC_FIREBASE_PRIVATE_KEY,

      clientEmail: process.env.NEXT_PUBLIC_FIREBASE_CLIENT_EMAIL,

      projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
    }),

    databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,
  });
}

当我将其部署到带有环境变量的 vercel 时:

NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----\n"

我收到此错误消息。

> Build error occurred
Error: Certificate object must contain a string "private_key" property.
    at FirebaseAppError.FirebaseError [as constructor] (/vercel/path0/node_modules/firebase-admin/lib/utils/error.js:42:28)
    at FirebaseAppError.PrefixedFirebaseError [as constructor] (/vercel/path0/node_modules/firebase-admin/lib/utils/error.js:88:28)
    at new FirebaseAppError (/vercel/path0/node_modules/firebase-admin/lib/utils/error.js:122:28)
    at new Certificate (/vercel/path0/node_modules/firebase-admin/lib/auth/credential.js:118:19)
    at new CertCredential (/vercel/path0/node_modules/firebase-admin/lib/auth/credential.js:187:64)
    at Object.cert (/vercel/path0/node_modules/firebase-admin/lib/firebase-namespace.js:220:58)
    at Object.3996 (/vercel/path0/.next/server/chunks/241.js:115:76)
    at __webpack_require__ (/vercel/path0/.next/server/webpack-runtime.js:25:42)
    at /vercel/path0/.next/server/pages/dashboard.js:124:81
    at Function.__webpack_require__.a (/vercel/path0/.next/server/webpack-runtime.js:103:13) {
  type: 'FirebaseAppError',
  errorInfo: {
    code: 'app/invalid-credential',
    message: 'Certificate object must contain a string "private_key" property.'
  },
  codePrefix: 'app'
}
Error! Command "npm run build" exited with 1
Error: Command "vercel build" exited with 1

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

.env.local
info  - Linting and checking validity of types  
info  - Creating an optimized production build  
info  - Compiled successfully
info  - Collecting page data  
info  - Generating static pages (4/4)
info  - Finalizing page optimization  

Page                                       Size     First Load JS
┌ ○ / (466 ms)                             461 B           271 kB
├   /_app                                  0 B             270 kB
├ ○ /404 (450 ms)                          526 B           271 kB
├ λ /api/hello                             0 B             270 kB

+ First Load JS shared by all              270 kB
  ├ chunks/framework-a87821de553db91d.js   45 kB
  ├ chunks/main-567f0ec5ceee81fc.js        29.7 kB
  ├ chunks/pages/_app-b443b414c9e8f379.js  195 kB
  ├ chunks/webpack-42cdea76c8170223.js     1.07 kB
  └ css/966e875c066cf46b.css               5.18 kB

λ  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
○  (Static)  automatically rendered as static HTML (uses no initial props)

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

【问题讨论】:

    标签: firebase next.js vercel


    【解决方案1】:

    我找到了答案。 .env.local 可以有类似的值

    NEXT_PUBLIC_FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----\n"
    

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

    NEXT_PUBLIC_FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n....\n-----END PRIVATE KEY-----\n
    

    当您添加键时,它应该重新格式化自己并看起来像这样。

    -----BEGIN PRIVATE KEY-----
    your
    secret
    key
    -----END PRIVATE KEY-----
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 2019-03-09
      • 2023-02-07
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      相关资源
      最近更新 更多