我正在使用Node.js 8.x中的GCP Secrets Manager(我知道,它很古老,但它是Cloud Functions上最新的GA Node运行时(。然而,当我运行他们的示例时,它不断从以下行抛出gRPC错误:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object
我正在尝试测试的代码行:
const secretClient = new SecretManagerServiceClient();
如果我在Node 8.x或Node 10.x上运行,并且如果我使用机密库(3.0.0
(的最新版本或Node 8.x(1.2.1
(的旧版本,我会得到同样的错误
出现此错误的原因似乎是库运行的是浏览器,而不是节点模式,这迫使它避免"回退"模式,试图错误地查找gRPC路径。这个决定是因为window
在作用域中,欺骗了isBrowser
逻辑。
根本原因
根本原因是使用jest
进行测试,默认情况下以jsDom
模式运行,插入类似window
的全局变量。
修复
将以下内容添加到jest.config.json
文件中。
testEnvironment: 'node',