Gcloud 函数部署崩溃

0 投票
1 回答
47 浏览
提问于 2025-04-13 18:56

每次我尝试部署一个功能时,总是会出现错误:

ERROR: gcloud crashed (TypeError): expected string or bytes-like object

我手动把相同的代码打包成一个zip文件上传,结果没有任何问题。

这是我使用的命令:

gcloud functions deploy myfunction \
  --runtime python39 \
  --trigger-http \
  --entry-point main \
  --source . \
  --region europe-west1 \
  --project myproject \
  --env-vars-file env.json

开启调试后:

DEBUG: expected string or bytes-like object
Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 987, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 807, in Run
    resources = command_instance.Run(args)
  File "/usr/lib/google-cloud-sdk/lib/surface/functions/deploy.py", line 104, in Run
    return command_v2.Run(args, self.ReleaseTrack())
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/functions/v2/deploy/command.py", line 1065, in Run
    _SetInvokerPermissions(args, function, is_new_function)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/functions/v2/deploy/command.py", line 866, in _SetInvokerPermissions
    service_ref_one_platform = resources.REGISTRY.ParseRelativeName(
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/core/resources.py", line 1082, in ParseRelativeName
    return parser.ParseRelativeName(
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/core/resources.py", line 203, in ParseRelativeName
    match = re.match(path_template, relative_name)
  File "/usr/lib/google-cloud-sdk/platform/bundledpythonunix/lib/python3.9/re.py", line 191, in match
    return _compile(pattern, flags).match(string)
TypeError: expected string or bytes-like object
ERROR: gcloud crashed (TypeError): expected string or bytes-like object

1 个回答

1

根据你的评论,看来你正在使用较旧版本的 Google Cloud SDK 411.0.0,这可能导致了下面的错误信息:

错误:gcloud 崩溃了 (类型错误):期望一个字符串或类似字节的对象

我尝试按照最新版本的 文档,使用 Gcloud CLI 468.0.0 部署一个简单的 Hello World 函数,并成功完成了部署。

建议你升级到最新版本的 Google Cloud SDK 468.0.0,然后重新部署。这样应该就能正常工作了。

撰写回答