[英]Google Cloud Storage call fails with "error:0909006C:PEM routines:get_name:no start line" when run in Blitz.js api handler
When I try to use @google-cloud/storage inside of a Blitz.js /api handler , it generates this error:当我尝试在Blitz.js /api 处理程序中使用@google-cloud/storage时,它会生成此错误:
error:0909006C:PEM routines:get_name:no start line
at Sign.sign (internal/crypto/sig.js:110:29)
at NodeCrypto.sign (C:\Users\markj\workspace\myapp\node_modules\google-auth-library\build\src\crypto\node\crypto.js:35:23)
at GoogleAuth.sign (C:\Users\markj\workspace\myapp\node_modules\google-auth-library\build\src\auth\googleauth.js:561:39)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async sign (C:\Users\markj\workspace\myapp\node_modules\@google-cloud\storage\build\src\signer.js:174:35) {
name: 'SigningError'
However when I run it locally with node test_api.js
, it works fine...但是,当我使用
node test_api.js
在本地运行它时,它工作正常......
Here is my code:这是我的代码:
// test_api.js
const {Storage} = require('@google-cloud/storage');
const client_id = process.env.GCP_STORAGE_ADMIN_CLIENT_ID
const projectId = process.env.GCP_PROJECT_ID
const client_email = process.env.GCP_STORAGE_ADMIN_CLIENT_EMAIL
const private_key = process.env.GCP_STORAGE_ADMIN_PRIVATE_KEY
const storage = new Storage({
projectId,
credentials: {
client_id,
client_email,
private_key,
}
});
async function listBuckets() {
console.log('PRIVATE KEY: ', private_key) // the error seems to indicate there is an issue here
// Output: "-----BEGIN PRIVATE KEY-----\n[the private key]\n-----END PRIVATE KEY-----\n"
const [buckets] = await storage.getBuckets();
console.log('Buckets:');
buckets.forEach(bucket => {
console.log(bucket.name);
});
}
module.exports = {
listBuckets // this function errors when called within Next.js /api handler
}
// When I uncomment this and run the file directly with node, it works
// listBuckets()
The error seems to indicate there is something wrong with the start/prefix of my private key, but I copied it exactly from the Google Service Account JSON file.该错误似乎表明我的私钥的开始/前缀有问题,但我从 Google 服务帐户 JSON 文件中准确复制了它。 It looks like this:
它看起来像这样:
-----BEGIN PRIVATE KEY-----\n[the private key]\n-----END PRIVATE KEY-----\n
It turned out to be a misplaced trailing comma in my .env.local
environment variables.原来是我的
.env.local
环境变量中错位的尾随逗号。
GCP_STORAGE_ADMIN_PRIVATE_KEY="[the private key]",
The trailing comma was not obvious because I had word wrap turned off, and the console.logs weren't displaying the comma, but it was somehow reading the comma and causing the entire private key to be parsed incorrectly.尾随的逗号不明显,因为我关闭了自动换行,并且 console.logs 没有显示逗号,但它以某种方式读取了逗号并导致整个私钥被错误地解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.