NodeJS 使用Google Cloud Tasks和Emulator

mnowg1ta  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(166)

我正在尝试使用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并在我的项目中安装该特定版本,但我仍然得到此错误。任何帮助将不胜感激。

2jcobegt

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中。我的初始化代码完全相同:

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

祝你好运!

相关问题