Windows
firebase deploy --only functions
Successful deployment of functions
[2018-06-08T23:39:05.380Z] ----------------------------------------------------------------------
[2018-06-08T23:39:05.384Z] Command: C:\Program Filesnodejsnode.exe C:\Users\Zach\AppDataRoaming\npmnode_modules\firebase-tools\bin\firebase deploy --only functi
ons --debug
[2018-06-08T23:39:05.385Z] CLI Version: 3.18.6
[2018-06-08T23:39:05.385Z] Platform: win32
[2018-06-08T23:39:05.385Z] Node Version: v8.11.1
[2018-06-08T23:39:05.386Z] Time: Fri Jun 08 2018 19:39:05 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:05.387Z] ----------------------------------------------------------------------
[2018-06-08T23:39:05.401Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/
firebase","https://www.googleapis.com/auth/cloud-platform"]
[2018-06-08T23:39:05.402Z] > authorizing via signed-in user
[2018-06-08T23:39:05.405Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/storage-app-dev
Fri Jun 08 2018 19:39:05 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:05.863Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 08 Jun 2018 23:39:04 GMT, content-type=application/json; charset=utf-8, content-length=120, conne
ction=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
[2018-06-08T23:39:05.865Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/storage-app-dev/tokens
Fri Jun 08 2018 19:39:05 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:06.299Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 08 Jun 2018 23:39:04 GMT, content-type=application/json; charset=utf-8, content-length=264, conne
ction=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
=== Deploying to 'storage-app-dev'...
i deploying functions
[2018-06-08T23:39:09.950Z] > [functions] package.json contents: {
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"algoliasearch": "^3.27.1",
"firebase-admin": "^5.12.1",
"firebase-functions": "^1.0.3"
},
"private": true
}
i functions: ensuring necessary APIs are enabled...
[2018-06-08T23:39:09.952Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/storage-app-dev?view=CO
NSUMER_VIEW
Fri Jun 08 2018 19:39:09 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:09.953Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/storage-app-dev?view=CON
SUMER_VIEW
Fri Jun 08 2018 19:39:09 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:10.670Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:09 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
Fri Jun 08 2018 19:39:10 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:11.014Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:09 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:11.015Z] >>> HTTP REQUEST GET https://mobilesdk-pa.googleapis.com/v1/projects/312131621451:getServerAppConfig
Fri Jun 08 2018 19:39:11 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:11.341Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:09 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
i functions: preparing functions directory for uploading...
[2018-06-08T23:39:11.342Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/storage-app-dev/configs
Fri Jun 08 2018 19:39:11 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:11.492Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:10 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
i functions: packaged functions (72.63 KB) for uploading
[2018-06-08T23:39:11.909Z] >>> HTTP REQUEST POST https://cloudfunctions.googleapis.com/v1/projects/storage-app-dev/locations/us-central1/functions:generateUploadUrl
Fri Jun 08 2018 19:39:11 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:12.286Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:10 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:12.287Z] >>> HTTP REQUEST PUT https://storage.googleapis.com/gcf-upload-us-central1-c17e162a-6bb6-4bbc-87e3-e124128020f3/a5693a5b-e9cd-4ce9-8733-4a14207
5c3ae.zip?GoogleAccessId=service-312131621451@gcf-admin-robot.iam.gserviceaccount.com&Expires=1528502950&Signature=CCEZ71pwNWdZjAEhEYbYizn25SfEwz7skf%2Fd1%2BDk%2BJwbmZbQk
VjJo4n6We6dOOktkEdPFhvQ5pnw8odqWQWSA8BJqppXjalVdmd8UlWaIjMSAlQ7hmyh1%2BLymCcGM4StOzWkot2Etmr51eVrtXYgQiNmvRYGQp%2BjlBs9NYoBsAdrn%2BDXMFAvW6Sl%2F9rcv5K7vJglp%2BQ0ufwhJrf6G
YF5QKKstiJXVqm5MrquU7cCO3XM2dUlcn6q4nQ%2Bn8jrm4Wn1nVDkZweIuCJsJ%2BNqlZzm25I8QmBv3MOWB9WUAo853DJ6upkKKx59qvd%2F%2BXfy6kZCvOK9IvO2QPIqRf41mdh%2Fg%3D%3D
ReadStream {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 65536,
buffer: BufferList { head: [Object], tail: [Object], length: 1 },
length: 65536,
pipes: null,
pipesCount: 0,
flowing: null,
ended: false,
endEmitted: false,
reading: false,
sync: false,
needReadable: false,
emittedReadable: true,
readableListening: false,
resumeScheduled: false,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events: { end: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
path: 'C:\Users\Zach\AppData\Local\Temp\firebase-functions-3656Svfr2SgLvij4.zip',
fd: 5,
flags: 'r',
mode: 438,
start: 0,
end: Infinity,
autoClose: true,
pos: 65536,
bytesRead: 65536 }
Fri Jun 08 2018 19:39:12 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:12.663Z] <<< HTTP RESPONSE 200 x-guploader-uploadid=AEnB2UpFJU-6GeaPnfQqgAUjq7BEXg6y0A9qTS68d7YlBvDg7EPtgxrHuRGZo_oJsjhXoOFw0osUGxIKhQ7WUB2DMYT3suV7yg,
etag="4cd352a1a8afc0e4adcaa7428fd68e19", x-goog-generation=1528501151217853, x-goog-metageneration=1, x-goog-hash=crc32c=KRcc9Q==, md5=TNNSoaivwOStyqdCj9aOGQ==, x-goog-st
ored-content-length=74377, x-goog-stored-content-encoding=identity, vary=Origin, content-length=0, date=Fri, 08 Jun 2018 23:39:11 GMT, server=UploadServer, content-type=t
ext/html; charset=UTF-8, alt-svc=quic=":443"; ma=2592000; v="43,42,41,39,35", connection=close
Fri Jun 08 2018 19:39:12 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:13.013Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:11 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
i functions: updating function listings_write...
[2018-06-08T23:39:13.016Z] Trigger is: {"eventTrigger":{"resource":"projects/storage-app-dev/databases/(default)/documents/listings/${id}","eventType":"providers/cloud.f
irestore/eventTypes/document.write","service":"firestore.googleapis.com"}}
[2018-06-08T23:39:13.017Z] >>> HTTP REQUEST PATCH https://cloudfunctions.googleapis.com/v1/projects/storage-app-dev/locations/us-central1/functions/listings_write
query params: {"updateMask":"sourceUploadUrl,name,labels,eventTrigger.resource,eventTrigger.eventType,eventTrigger.service"}
{ sourceUploadUrl: 'https://storage.googleapis.com/gcf-upload-us-central1-c17e162a-6bb6-4bbc-87e3-e124128020f3/a5693a5b-e9cd-4ce9-8733-4a142075c3ae.zip?GoogleAccessId=se
[email protected]&Expires=1528502950&Signature=CCEZ71pwNWdZjAEhEYbYizn25SfEwz7skf%2Fd1%2BDk%2BJwbmZbQkVjJo4n6We6dOOktkEdPFhvQ5pnw
8odqWQWSA8BJqppXjalVdmd8UlWaIjMSAlQ7hmyh1%2BLymCcGM4StOzWkot2Etmr51eVrtXYgQiNmvRYGQp%2BjlBs9NYoBsAdrn%2BDXMFAvW6Sl%2F9rcv5K7vJglp%2BQ0ufwhJrf6GYF5QKKstiJXVqm5MrquU7cCO3XM
2dUlcn6q4nQ%2Bn8jrm4Wn1nVDkZweIuCJsJ%2BNqlZzm25I8QmBv3MOWB9WUAo853DJ6upkKKx59qvd%2F%2BXfy6kZCvOK9IvO2QPIqRf41mdh%2Fg%3D%3D',
name: 'projects/storage-app-dev/locations/us-central1/functions/listings_write',
labels: { 'deployment-tool': 'cli-firebase' },
eventTrigger:
{ resource: 'projects/storage-app-dev/databases/(default)/documents/listings/${id}',
eventType: 'providers/cloud.firestore/eventTypes/document.write',
service: 'firestore.googleapis.com' } }
Fri Jun 08 2018 19:39:13 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:13.426Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:11 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:13.429Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:13 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:13.736Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:12 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:15.737Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:15 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:16.050Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:14 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:18.052Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:18 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:18.365Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:16 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:20.366Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:20 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:20.673Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:19 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:22.675Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:22 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:22.988Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:21 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:24.990Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:24 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:25.296Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:23 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:27.297Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:27 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:27.597Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:26 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:29.599Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:29 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:29.896Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:28 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:31.897Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:31 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:32.014Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:30 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v
="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:34.016Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW
44
Fri Jun 08 2018 19:39:34 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:34.330Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39
:32 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="43,42,41,39,35", accept-ranges=none, connection=close
[2018-06-08T23:39:36.333Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1/operations/c3RvcmFnZS1hcHAtZGV2L3VzLWNlbnRyYWwxL2xpc3RpbmdzX3dyaXRlL194blhCRlZzYW44
Fri Jun 08 2018 19:39:36 GMT-0400 (Eastern Daylight Time)
[2018-06-08T23:39:36.636Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 08 Jun 2018 23:39:35 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="43,42,41,39
,35", accept-ranges=none, connection=close
! functions[listings_write]: Deployment error.
Failed to configure trigger providers/cloud.firestore/eventTypes/document.[email protected] (listings_write)
Functions deploy had errors. To continue deploying other features (such as database), run:
firebase deploy --except functions
Error: Functions did not deploy properly.
The ref path syntax is incorrect.
documents/listings/${id} should be documents/listings/{id} (no $)
You're right, this was the issue. I figure this out myself a few days ago. I think there should be a warning (i.e. don't allow user to deploy with a $ in the ref string. It's a pretty easy mistake to make.
Just ran into this myself, upvoting for visibility.
Thanks for the feedback, everyone. We will try to get to this when we can but right now we are quite busy. PRs are welcome, though :)
Another reason for this problem could be two same-name variables in the doument path.
e.g. users/{id}/notis/{id} will result in error but users/{uid}/notis/{notiId} would work.
For anyone getting here from Google; I had a similar issue with wrongly named wildcards
this doesn't work:
/users/{user-id}
this works:
/users/{userId}
Most helpful comment
The ref path syntax is incorrect.
documents/listings/${id}should bedocuments/listings/{id}(no$)