GCP Secret Manager 抛出:"path" 参数必须是字符串类型

GCP Secret Manager throws: "path" argument must be of type string

我正在努力使用 GCP Secrets Manager from Node.js 8.x (I know, it's ancient, but it's the newest GA Node runtime on Cloud Functions). However, when I run their example, it keeps throwing gRPC error from this line:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object

我正在尝试测试的代码行:

const secretClient = new SecretManagerServiceClient();

如果我在节点 8.x 或节点 10.x 上 运行,并且如果我使用最新版本的秘密库 (3.0.0) 或 Node 的旧版本 8.x (1.2.1)

出现这个错误是因为库是 运行 browser 而不是 Node 模式,这迫使它避免"fallback" 模式,试图错误地查找 gRPC 路径。这个决定是因为 window 在范围内,欺骗了 isBrowser logic.

根本原因

根本原因是 jest 被用来测试,default runs in jsDom mode,插入了像 window 这样的全局变量。

修复

将以下内容添加到您的 jest.config.json 文件中。

testEnvironment: 'node',