[英]Google Cloud Storage call fails with "error:0909006C:PEM routines:get_name:no start line" when run in Blitz.js api handler
[英]error:0909006C:PEM routines:get_name:no start line - for google cloud platform in heroku
當我嘗試使用 @google-cloud/storage 時,它會返回此錯誤
Error: error:0909006C:PEM routines:get_name:no start line
2021-12-13T10:36:19.800822+00:00 app[web.1]: at Sign.sign (internal/crypto/sig.js:110:29)
2021-12-13T10:36:19.800823+00:00 app[web.1]: at Object.sign (/app/node_modules/gtoken/node_modules/jwa/index.js:152:45)
2021-12-13T10:36:19.800823+00:00 app[web.1]: at Object.jwsSign [as sign] (/app/node_modules/gtoken/node_modules/jws/lib/sign-stream.js:32:24)
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.requestToken (/app/node_modules/gtoken/build/src/index.js:225:31)
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.getTokenAsyncInner (/app/node_modules/gtoken/build/src/index.js:163:21)
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.getTokenAsync (/app/node_modules/gtoken/build/src/index.js:142:55)
2021-12-13T10:36:19.800825+00:00 app[web.1]: at GoogleToken.getToken (/app/node_modules/gtoken/build/src/index.js:94:21)
2021-12-13T10:36:19.800825+00:00 app[web.1]: at JWT.refreshTokenNoCache (/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:171:36)
2021-12-13T10:36:19.800826+00:00 app[web.1]: at JWT.refreshToken (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:152:24)
2021-12-13T10:36:19.800826+00:00 app[web.1]: at JWT.getRequestMetadataAsync (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:284:28)
2021-12-13T10:36:19.800827+00:00 app[web.1]: at JWT.getRequestMetadataAsync (/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:94:26)
2021-12-13T10:36:19.800827+00:00 app[web.1]: at JWT.getRequestHeaders (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:247:37)
2021-12-13T10:36:19.800827+00:00 app[web.1]: at GoogleAuth.authorizeRequest (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:600:38)
2021-12-13T10:36:19.800828+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:95:5)
2021-12-13T10:36:19.800828+00:00 app[web.1]: at async Promise.all (index 1)
{ 2021-12-13T10:36:19.800829+00:00 app[web.1]: library: 'PEM routines',
2021-12-13T10:36:19.800829+00:00 app[web.1]: function: 'get_name',
2021-12-13T10:36:19.800829+00:00 app[web.1]: reason: 'no start line',
2021-12-13T10:36:19.800829+00:00 app[web.1]: code: 'ERR_OSSL_PEM_NO_START_LINE'
2021-12-13T10:36:19.800830+00:00 app[web.1]: }
2021-12-13T10:36:19.800879+00:00 app[web.1]: Error error:0909006C:PEM routines:get_name:no start line
看來錯誤是基於來自谷歌雲服務帳戶的私鑰
-----BEGIN PRIVATE KEY-----
ENTIREKEY
-----END PRIVATE KEY-----
我通過刪除鍵中的\n
行並手動添加新行來解決此問題,例如:
私鑰: \n---BEGIN PRIVATE KEY----\nShfkkJHNJK\nJeidj\n---END PRIVATE KEY----\n
至:
---BEGIN PRIVATE KEY----
ShfkkJHNJK
Jeidj
---END PRIVATE KEY----
注意:不要忘記最后一個\n
。
看來問題出在“我們如何導入”密鑰上。 有幾種解決方案,但我想要的最佳解決方案是在我從 env 變量導入密鑰時添加.replace(/\\n/gm, "\n")
當我想從 env 導入密鑰時.
前:
process.env.PRIVATE_KEY
后:
process.env.PRIVATE_KEY?.replace(/\\n/gm, "\n")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.