我正在尝试使用Google Cloud Tasks进行本地开发。我可以将任务入队到Google Cloud,但我想使用模拟器进行本地开发。我发现了两个:
我对两者都有同样的问题。两个项目中的示例代码显示使用sslCreds
选项:
import { CloudTasksClient } from "@google-cloud/tasks"
import { credentials } from "@grpc/grpc-js"
const client = new CloudTasksClient({
port: 8123,
servicePath: 'localhost',
sslCreds: credentials.createInsecure(),
});
当我使用它时,我收到以下错误:
/app/functions/node_modules/@google-cloud/tasks/build/src/v2/cloud_tasks_client.js:203
throw err;
^
TypeError: Channel credentials must be a ChannelCredentials object
at new ChannelImplementation (/app/functions/node_modules/@google-cloud/tasks/node_modules/@grpc/grpc-js/build/src/channel.js:86:19)
at new Client (/app/functions/node_modules/@google-cloud/tasks/node_modules/@grpc/grpc-js/build/src/client.js:62:36)
at new ServiceClientImpl (/app/functions/node_modules/@google-cloud/tasks/node_modules/@grpc/grpc-js/build/src/make-client.js:58:5)
at GrpcClient.createStub (/app/functions/node_modules/@google-cloud/tasks/node_modules/google-gax/build/src/grpc.js:334:22)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
我不知道为什么会发生这种情况,因为在他们的代码中,createInsecure()创建了一个InsecureChannelCredentialsImpl
的示例,它扩展了ChannelCredentials
。如果我进入Google-Cloud/tasks模块中的channel-js
并注解掉抛出的错误,一切都正常。
我在issue中看到,Google Cloud Tasks中的Google grpc库与grpc之间可能不兼容。我已经将所有内容更新到最新版本,并且我已经进入Google Cloud Task模块以查找当前版本的grpc并在我的项目中安装该特定版本,但我仍然得到此错误。任何帮助将不胜感激。
1条答案
按热度按时间2jcobegt1#
我也有同样的问题。这里提到的建议起了作用:https://github.com/googleapis/nodejs-tasks/issues/462#issuecomment-750417668
我通过确保@grpc/grpc-js匹配与google-gaxs依赖相同的exakt版本来修复这个问题,我通过检查yarn.lock文件发现它是1.1.8。
在我的例子中,它是1.8.0,在package-lock.json中。我的初始化代码完全相同:
祝你好运!