TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在

     2023-03-08     284

关键词:

【中文标题】TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在【英文标题】:TypeError: key must be a string, a buffer or an object at typeError with GCP file exists 【发布时间】:2021-11-17 07:53:46 【问题描述】:

我正在尝试简单地测试我们的 Google Cloud Platform (GCP) 存储中是否存在文件。我在 express js 服务器上使用 GCP 存储桶。下面基本上是从https://googleapis.dev/nodejs/storage/latest/File.html#exists复制的一个非常简单的示例

编辑:这就是我验证 GCP 密钥的方式:

const  Storage  = require('@google-cloud/storage');

const storage = new Storage(
    projectId: 'my-cloud',
    keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,
);
const bucketName = 'my-ci';

(稍作改动,我知道你应该返回data[0]

const bucket = storage.bucket(bucketName);
const file = bucket.file(path);
const exists = await file.exists().then(data => 
    return data
)

但是当我尝试运行它时,我得到了错误:

[nodemon] starting `node --inspect server/server.js`
Debugger listening on ws://127.0.0.1:9229/9a677766-4a93-4499-b57c-55f5f05096d7
For help, see: https://nodejs.org/en/docs/inspector
Server listening on port 4000!
/opt/node_modules/jwa/index.js:115
return new TypeError(errMsg);
^

TypeError: key must be a string, a buffer or an object
at typeError (/opt/node_modules/jwa/index.js:115:10)
at checkIsPrivateKey (/opt/node_modules/jwa/index.js:61:9)
at Object.sign (/opt/node_modules/jwa/index.js:147:5)
at Object.jwsSign [as sign] (/opt/node_modules/jws/lib/sign-stream.js:32:24)
at JWTAccess.getRequestHeaders (/opt/node_modules/google-auth-library/build/src/auth/jwtaccess.js:87:31)
at JWT.getRequestMetadataAsync (/opt/node_modules/google-auth-library/build/src/auth/jwtclient.js:76:51)
at JWT.getRequestHeaders (/opt/node_modules/google-auth-library/build/src/auth/oauth2client.js:238:37)
at GoogleAuth.authorizeRequest (/opt/node_modules/google-auth-library/build/src/auth/googleauth.js:593:38)
at processTicksAndRejections (node:internal/process/task_queues:96:5)

由于错误消息没有给出有用的回溯,我自己做了一些挖掘。通过到处放置console.log 语句,我将范围缩小到一行

const exists = await file.exists().then(data => 
    return data
)

并尝试了各种方法,从删除 .then(...) 子句到删除 await(在承诺解决之前确实有效)。这些似乎都不起作用。

这可能是什么潜在原因?

【问题讨论】:

根据堆栈跟踪,它在登录期间失败(GoogleAuth、google-auth-library)并且似乎无法访问您的代码 根据the docs你需要创建new Storage()并传递一个keyfile给它 您遇到了凭证问题。这段代码在哪里运行?如果在本地,您是否设置了 Google Cloud CLI 并进行了身份验证?如果在 Google Cloud 中的计算服务(例如 Compute Engine)上运行,您是否将实例设置为具有存储访问权限?需要有关如何授权应用程序访问存储的更多详细信息。 @Vitalii @Jon Hanley 我在代码中做。我已经编辑了帖子,其中包括我通过环境变量使用正确的 GCP 密钥定义它的位置。但是为什么代码在const exists = await file.exists( ... 行失败?当我尝试const file = bucket.file(path);时,它肯定会失败吗? 【参考方案1】:

最终弄明白了——这是因为 GCP 密钥是旧版本的密钥。如果遇到上述错误,请尝试检查您的密钥是否正确。

【讨论】:

读取 JSON 字符串 | TypeError:字符串索引必须是整数

】读取JSON字符串|TypeError:字符串索引必须是整数【英文标题】:ReadingaJSONstring|TypeError:stringindicesmustbeintegers【发布时间】:2015-03-0612:18:22【问题描述】:我正在尝试创建一个程序,该程序将通过GUI读取JSON字符串,然后使用它来... 查看详情

pd.merge "TypeError: 字符串索引必须是整数"

】pd.merge"TypeError:字符串索引必须是整数"【英文标题】:pd.merge"TypeError:stringindicesmustbeintegers"【发布时间】:2021-03-2812:15:51【问题描述】:我有3个文件,我的代码基本上是一系列合并,将文件"lookup"和"No... 查看详情

TypeError:float() 参数必须是字符串或数字,而不是“期间”

】TypeError:float()参数必须是字符串或数字,而不是“期间”【英文标题】:TypeError:float()argumentmustbeastringoranumber,not\'Period\'【发布时间】:2017-08-2914:43:53【问题描述】:我有一个带有这样列的pandas数据框:df.columns=pd.to_datetime(list(... 查看详情

TypeError:字符串索引必须是整数,而不是 Python 字典中的 str

】TypeError:字符串索引必须是整数,而不是Python字典中的str【英文标题】:TypeError:stringindicesmustbeintegers,notstronPythonDictionary【发布时间】:2015-08-0404:56:55【问题描述】:我被困住了,我确信这很简单,但我现在只是在绕圈子。下... 查看详情

TypeError:参数必须是字符串或数字列上的字符串或数字

】TypeError:参数必须是字符串或数字列上的字符串或数字【英文标题】:TypeError:argumentmustbeastringornumberoncolumnwithstringsthatarenumbers【发布时间】:2020-10-2713:15:40【问题描述】:我有一个包含类别的数据集。在第4列中,我有2个值(... 查看详情

Firebase - TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型

】Firebase-TypeError[ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型【英文标题】:Firebase-TypeError[ERR_INVALID_ARG_TYPE]:The"path"argumentmustbeoftypestring【发布时间】:2020-10-2102:36:54【问题描述】:我有两个Firebase托管项目设置。一... 查看详情

为啥我看到“TypeError:字符串索引必须是整数”?

】为啥我看到“TypeError:字符串索引必须是整数”?【英文标题】:WhyamIseeing"TypeError:stringindicesmustbeintegers"?为什么我看到“TypeError:字符串索引必须是整数”?【发布时间】:2011-08-2923:29:10【问题描述】:我正在学习Pyth... 查看详情

TypeError:字符串索引必须是字典中的整数

】TypeError:字符串索引必须是字典中的整数【英文标题】:TypeError:stringindicesmustbeintegersindictionary【发布时间】:2022-01-1622:08:59【问题描述】:为什么这段代码给了我typeError?以及如何使用变量X调用字典?“TypeError:字符串索引... 查看详情

node-websocket-server TypeError:参数必须是字符串

】node-websocket-serverTypeError:参数必须是字符串【英文标题】:node-websocket-serverTypeError:Argumentmustbeastring【发布时间】:2011-04-2221:32:50【问题描述】:我在ubuntu上跟踪/var/log/logfile,并得到一个TypeError。适用于我的本地Mac机器/var/log/s... 查看详情

TypeError: float() 参数必须是字符串或数字,而不是“函数”——Python/Sklearn

】TypeError:float()参数必须是字符串或数字,而不是“函数”——Python/Sklearn【英文标题】:TypeError:float()argumentmustbeastringoranumber,not\'function\'–Python/Sklearn【发布时间】:2018-02-2610:19:22【问题描述】:我有一个名为Flights.py的程序的... 查看详情

TypeError:序列索引必须是整数[重复]

】TypeError:序列索引必须是整数[重复]【英文标题】:TypeError:sequenceindexmustbeinteger[duplicate]【发布时间】:2015-05-2301:42:36【问题描述】:我只是在每3个字符之间添加一个“,”时遇到问题。printtotalpointspoints=\',\'.join([totalpoints[i:i+3... 查看详情

在 Python 中读取 JSON 字符串:接收错误“TypeError:字符串索引必须是整数”

】在Python中读取JSON字符串:接收错误“TypeError:字符串索引必须是整数”【英文标题】:ReadingaJSONstringinPython:Receivingerror"TypeError:stringindicesmustbeintegers"【发布时间】:2017-06-0418:18:52【问题描述】:我正在尝试创建一个使... 查看详情

TypeError: int() 参数必须是字符串、类似字节的对象或实数,而不是“NoneType”

】TypeError:int()参数必须是字符串、类似字节的对象或实数,而不是“NoneType”【英文标题】:TypeError:int()argumentmustbeastring,abytes-likeobjectorarealnumber,not\'NoneType\'【发布时间】:2021-12-3006:34:09【问题描述】:我正在从这个youtubeecommercet... 查看详情

LabelEncoder -- TypeError: 参数必须是字符串或数字

】LabelEncoder--TypeError:参数必须是字符串或数字【英文标题】:LabelEncoder--TypeError:argumentmustbeastringornumber【发布时间】:2020-09-1118:07:09【问题描述】:importpandasaspdfromsklearn.preprocessingimportLabelEncoderpd.set_option(\'display.max_colum 查看详情

如何在不获取“TypeError:字符串索引必须是整数”的情况下对图像进行 numpy 切片

】如何在不获取“TypeError:字符串索引必须是整数”的情况下对图像进行numpy切片【英文标题】:Howtonumpy-slicinganimagewithoutgetting"TypeError:stringindicesmustbeintegers"【发布时间】:2018-12-2410:35:08【问题描述】:我收到了错误:"Ty... 查看详情

弹性搜索 | TypeError:字符串索引必须是整数

】弹性搜索|TypeError:字符串索引必须是整数【英文标题】:ElasticSearch|TypeError:stringindicesmustbeintegers【发布时间】:2022-01-1500:31:34【问题描述】:我正在使用这个Notebook,其中ApplyDocumentClassifier部分更改如下。Jupyter实验室,内核:... 查看详情

Python:TypeError:字符串索引必须是整数[关闭]

】Python:TypeError:字符串索引必须是整数[关闭]【英文标题】:Python:TypeError:stringindicesmustbeintegers[closed]【发布时间】:2020-02-2713:48:28【问题描述】:这是在这里发布了很多时间的类似问题,但我无法理解它。importjsonstr2="""[\'cta\':... 查看详情

TypeError:字符串索引必须是整数(在 lambda 函数中)

】TypeError:字符串索引必须是整数(在lambda函数中)【英文标题】:TypeError:stringindicesmustbeintegers(inlambdafunction)【发布时间】:2021-09-0709:18:39【问题描述】:我的数据集是这样的urlbooleandetailsnumberOfPagesdatexzy.com0\'https://www.eltako.depdf... 查看详情