在模拟器中使用Google Cloud Tasks



我正在尝试使用Google Cloud Tasks进行本地开发。我能够将任务排队到Google Cloud,但我想使用模拟器进行本地开发。我找到了两个:

  • https://github.com/aertje/cloud-tasks-emulator
  • https://pypi.org/project/gcloud-tasks-emulator/

我对两者都有同样的问题。两个项目中的示例代码显示了使用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()创建了扩展ChannelCredentialsInsecureChannelCredentialsImpl实例。如果我进入channel-js在谷歌云/任务模块和注释抛出的错误,一切工作。

我在一个问题中看到,谷歌的grpc库在谷歌云任务和grpc之间可能存在不兼容。我已经把所有的东西更新到最新版本,我已经进入谷歌云任务模块找到grpc的当前版本,并在我的项目中安装了特定的版本,但我仍然得到这个错误。如有任何帮助,我将不胜感激。

我也有同样的问题。这里提到的建议起了作用:https://github.com/googleapis/nodejs-tasks/issues/462#issuecomment-750417668

我通过确保@grpc/grpc-js匹配与google-gax依赖完全相同的版本来修复这个问题,这是我通过检查纱线发现的。锁文件为1.1.8.

在我的例子中,package-lock.json中的版本是1.8.0。我的初始化代码完全相同:

import { credentials } from "@grpc/grpc-js";
const client = new CloudTasksClient({
projectId: PROJECT_ID,
port: 8123,
servicePath: 'localhost',
sslCreds: credentials.createInsecure(),
});

祝你好运!

最新更新