Ошибка развертывания GCF Node10: «Ошибка при загрузке кода пользователя. Сообщение об ошибке: предоставленный код не является загружаемым модулем». - PullRequest
2 голосов
/ 01 мая 2019

После внесения некоторых корректировок (довольно большой PR), который в основном добавляет подключение к Google Cloud Storage к этой функции, развертывание начинает давать сбой.К сожалению, сообщение об ошибке довольно неясно и поэтому не дает мне много подсказок.Локально и в тестах все работает нормально, так что я сейчас немного растерялся, в каком направлении искать.Журналы также не дают информации.

К сожалению, не очень легко поделиться изменениями в PR.В худшем случае я вернусь и оттуда пошагово, но это утомительный процесс.

Учетная запись службы, которая использовалась в развертывании, получила доступ к использованной корзине (с записью), но я также неНе думаю, что эта ошибка намекает на разрешения, иначе я надеюсь, что сообщение об ошибке будет более проницательным.

Используемая команда:

gcloud beta functions deploy eventStreamPostEvent --runtime nodejs10 --memory 128MB --trigger-http --source ./dist --service-account $DEPLOY_SERVICE_ACCOUNT --verbosity debug

Deploying function (may take a while - up to 2 minutes)...
..............................failed.
DEBUG: (gcloud.beta.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: Provided code is not a loadable module.
Could not load the function, shutting down.
Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 985, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 795, in Run
    resources = command_instance.Run(args)
  File "/usr/lib/google-cloud-sdk/lib/surface/functions/deploy.py", line 231, in Run
    enable_vpc_connector=True)
  File "/usr/lib/google-cloud-sdk/lib/surface/functions/deploy.py", line 175, in _Run
    return api_util.PatchFunction(function, updated_fields)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/functions/util.py", line 300, in CatchHTTPErrorRaiseHTTPExceptionFn
    return func(*args, **kwargs)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/functions/util.py", line 356, in PatchFunction
    operations.Wait(op, messages, client, _DEPLOY_WAIT_NOTICE)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/functions/operations.py", line 126, in Wait
    _WaitForOperation(client, request, notice)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/functions/operations.py", line 101, in _WaitForOperation
    sleep_ms=SLEEP_MS)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 219, in RetryOnResult
    result = func(*args, **kwargs)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/api_lib/functions/operations.py", line 65, in _GetOperationStatus
    raise exceptions.FunctionsError(OperationErrorToString(op.error))
FunctionsError: OperationError: code=3, message=Function failed on loading user code. Error message: Provided code is not a loadable module.
Could not load the function, shutting down.

ERROR: (gcloud.beta.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: Provided code is not a loadable module.
Could not load the function, shutting down.

Я надеюсь, что кто-нибудь знает, что вызывает эту ошибку.

Журналы Stackdriver не показывают мне ничего больше, чем:

 protoPayload: {
  @type:  "type.googleapis.com/google.cloud.audit.AuditLog"   
  authenticationInfo: {…}   
  methodName:  "google.cloud.functions.v1.CloudFunctionsService.UpdateFunction"   
  requestMetadata: {
   destinationAttributes: {…}    
   requestAttributes: {…}    
  }
  resourceName:  "projects/<projectName>/locations/europe-west1/functions/eventStreamPostEvent"   
  serviceName:  "cloudfunctions.googleapis.com"   
  status: {
   code:  3    
   message:  "INVALID_ARGUMENT"    
  }
 }

1 Ответ

0 голосов
/ 10 июля 2019

У меня была такая же проблема, и кажется, что сообщение приходит от здесь .

Если у вас есть несколько файлов .js с некоторыми подпапками в корневой папке вашей функции, по умолчанию без какой-либо спецификации вам нужно назвать модуль ввода как index.js или function.js.

Я обнаружил это путем развертывания функции с использованием node8. Сообщения об ошибках должны быть понятнее ...

...