'Google Cloud Function / Firebase Function deployment stops working: "unexpected end of file"

Deploying our Firebase Function suddenly stopped working recently. Running firebase functions:log provided an insight that was not very helpful:

2022-02-15T06:53:12.421579Z E XXX: {"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":3,"message":"Build failed: curl: (22) The requested URL returned error: 404 \n\ngzip: stdin: unexpected end of file\ntar: Child returned status 1\ntar: Error is not recoverable: exiting now; Error ID: 08522105"},"authenticationInfo":{"principalEmail":"XXXX"},"serviceName":"cloudfunctions.googleapis.com","methodName":"google.cloud.functions.v1.CloudFunctionsService.UpdateFunction","resourceName":"XXXX"}

The deployment works fine for other projects, but fails even for older versions of this project (ones that have been deployed successfully in the past).



Solution 1:[1]

I received a 404 error from gcloud.functions.deploy on deploy:

Deploying function (may take a while - up to 2 minutes)...
.
For Cloud Build Stackdriver Logs, visit: https://console.cloud.google.com/logs/viewer?project=x-xxx-dev&advancedFilter=resource.type%3Dbuild%0Aresource.labels.build_id%3D35aac420-xx-4cd1-b7be-blah%0AlogName%3Dprojects%2Fxxx-xxx-dev%2Flogs%2Fcloudbuild
................failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: curl: (22) The requested URL returned error: 404 

The root cause error is not visible here, but if you click on the Stackdriver logs link in the console output, there will be more details. In my case, the root error was that yarn 2.4.3 couldn't be downloaded @ https://github.com/yarnpkg/yarn/releases/download/v2.4.3/yarn-v2.4.3.tar.gz

stackdriver logs scerenshot

I did not expect to be using yarn 2 (berry) at this point, but in my package.json I was not explicit:

 "engines": {
    ...
    "yarn": ">=1.22.0"
  },

By changing to accept only version 1, the problem was resolved:

 "engines": {
    ...
    "yarn": "^1.22.0"
  },

I still don't understand why npm resolved this missing version.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 PhaedrusTheGreek