Firebase-tools: Menyebarkan fungsi sangat lambat

Dibuat pada 14 Nov 2017  ·  94Komentar  ·  Sumber: firebase/firebase-tools

Informasi versi

3.15.0

Langkah-langkah untuk mereproduksi

Buat direktori functions sederhana dengan hanya 1 fungsi:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.ping = functions.https.onRequest((req, res) => {
  res.status(200).send('pong');
}

Sekarang gunakan menggunakan firebase deploy --only functions .

Perilaku yang diharapkan

Menyebarkan lebih cepat. Sekarang dibutuhkan beberapa menit untuk menyebarkan file fungsi kecil. Jika saya membandingkan ini dengan unggahan/penyebaran hosting, yang itu berjalan cukup cepat dan lebih dari satu file.

Perilaku sebenarnya

Butuh waktu sangat lama untuk mengunggah/menyebarkan. Itu hang selama fase preparing functions directory for uploading... .

image

Log debug untuk firebase deploy --only functions :
_harap dicatat saya menggunakan fungsi lain pada langkah reproduksi saya, tetapi idenya sama: fungsi kecil dengan hanya beberapa baris kode._

> firebase deploy --only functions --debug
[2017-11-14T10:03:55.799Z] ----------------------------------------------------------------------
[2017-11-14T10:03:55.804Z] Command:       C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\firebase-tools\bin\firebase deploy --only functions --debug
[2017-11-14T10:03:55.806Z] CLI Version:   3.15.0
[2017-11-14T10:03:55.806Z] Platform:      win32
[2017-11-14T10:03:55.806Z] Node Version:  v6.11.1
[2017-11-14T10:03:55.807Z] Time:          Tue Nov 14 2017 04:03:55 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:55.807Z] ----------------------------------------------------------------------

[2017-11-14T10:03:55.826Z] > 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"]
[2017-11-14T10:03:55.827Z] > authorizing via signed-in user
[2017-11-14T10:03:55.831Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/marktec-itesm
 Tue Nov 14 2017 04:03:55 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:56.230Z] <<< HTTP RESPONSE 200 server=nginx, date=Tue, 14 Nov 2017 10:03:57 GMT, content-type=application/json; charset=utf-8, content-length=108, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
[2017-11-14T10:03:56.232Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/marktec-itesm/tokens
 Tue Nov 14 2017 04:03:56 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:56.622Z] <<< HTTP RESPONSE 200 server=nginx, date=Tue, 14 Nov 2017 10:03:57 GMT, content-type=application/json; charset=utf-8, content-length=262, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store

=== Deploying to 'marktec-itesm'...

i  deploying functions
[2017-11-14T10:03:57.040Z] > [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": {
    "firebase-admin": "~5.4.2",
    "firebase-functions": "^0.7.1"
  },
  "private": true
}
i  functions: ensuring necessary APIs are enabled...
i  runtimeconfig: ensuring necessary APIs are enabled...
[2017-11-14T10:03:57.043Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/cloudfunctions.googleapis.com/projectSettings/marktec-itesm?view=CONSUMER_VIEW
 Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.044Z] >>> HTTP REQUEST GET https://servicemanagement.googleapis.com/v1/services/runtimeconfig.googleapis.com/projectSettings/marktec-itesm?view=CONSUMER_VIEW
 Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.479Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 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="41,39,38,37,35", accept-ranges=none, connection=close
+  functions: all necessary APIs are enabled
[2017-11-14T10:03:57.488Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 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="41,39,38,37,35", accept-ranges=none, connection=close
+  runtimeconfig: all necessary APIs are enabled
[2017-11-14T10:03:57.489Z] >>> HTTP REQUEST GET https://appengine.googleapis.com/v1/apps/marktec-itesm
 Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.490Z] >>> HTTP REQUEST GET https://apikeys.googleapis.com/v1/projects/marktec-itesm/apiKeys
 Tue Nov 14 2017 04:03:57 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:03:57.775Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:03:57.950Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:03:58 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="41,39,38,37,35", accept-ranges=none, connection=close
i  functions: preparing functions directory for uploading...
[2017-11-14T10:05:52.258Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/marktec-itesm/configs
 Tue Nov 14 2017 04:05:52 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:05:52.676Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:05:53 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="41,39,38,37,35", accept-ranges=none, connection=close
i  functions: packaged functions (22.1 KB) for uploading
[2017-11-14T10:06:01.593Z] >>> HTTP REQUEST GET https://www.googleapis.com/storage/v1/b/staging.marktec-itesm.appspot.com
 Tue Nov 14 2017 04:06:01 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:01.940Z] <<< HTTP RESPONSE 200 x-guploader-uploadid=AEnB2UpSfip_C_K1wvCJaLNVW1q05_zW3D3fph0U7sYHr6_9M5InFI0Pi_X1VFc8B5PpbZImDdZiAaZZLqWXdl-JxdzedIZeExTeX4ifDbfvg7G8tsjPm1Y, etag=CAE=, vary=Origin, X-Origin, content-type=application/json; charset=UTF-8, expires=Tue, 14 Nov 2017 10:06:02 GMT, date=Tue, 14 Nov 2017 10:06:02 GMT, cache-control=private, max-age=0, must-revalidate, no-transform, content-length=548, server=UploadServer, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", connection=close
[2017-11-14T10:06:01.942Z] >>> HTTP REQUEST POST https://www.googleapis.com/upload/storage/v1/b/staging.marktec-itesm.appspot.com/o?uploadType=media&name=firebase-functions-source ReadStream {
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 65536,
     buffer: BufferList { head: [Object], tail: [Object], length: 1 },
     length: 22627,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: true,
     endEmitted: false,
     reading: false,
     sync: false,
     needReadable: false,
     emittedReadable: true,
     readableListening: false,
     resumeScheduled: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events: { end: [Function] },
  _eventsCount: 1,
  _maxListeners: undefined,
  path: 'C:\\Users\\benja\\AppData\\Local\\Temp\\firebase-functions-69565Vb7CkPZp0rr.zip',
  fd: 6,
  flags: 'r',
  mode: 438,
  start: undefined,
  end: undefined,
  autoClose: true,
  pos: undefined,
  bytesRead: 22627 }
 Tue Nov 14 2017 04:06:01 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:02.601Z] <<< HTTP RESPONSE 200 x-guploader-uploadid=AEnB2UqV_ml27ZAt9W3ouCst97NUKPW4MeltDmxl06PA4sGBy6A8fqo0bAbEKHT0vokHMXo0t0yhOY0ve3XT0RrLjsiDwXyhwA, etag=CJPx8MbovdcCEAE=, vary=Origin, X-Origin, content-type=application/json; charset=UTF-8, cache-control=no-cache, no-store, max-age=0, must-revalidate, pragma=no-cache, expires=Mon, 01
Jan 1990 00:00:00 GMT, date=Tue, 14 Nov 2017 10:06:03 GMT, content-length=860, server=UploadServer, alt-svc=quic=":443"; ma=2592000; v="41,39,38,37,35", connection=close
+  functions: functions folder uploaded successfully
[2017-11-14T10:06:02.604Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/projects/marktec-itesm/locations/us-central1/functions
 Tue Nov 14 2017 04:06:02 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:02.845Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:03 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="41,39,38,37,35", accept-ranges=none, connection=close
i  functions: updating function verifyItesmDomain...
[2017-11-14T10:06:02.849Z] Trigger is:  resource=projects/marktec-itesm, eventType=providers/firebase.auth/eventTypes/user.create
[2017-11-14T10:06:02.851Z] >>> HTTP REQUEST PUT https://cloudfunctions.googleapis.com/v1beta2/projects/marktec-itesm/locations/us-central1/functions/verifyItesmDomain { sourceArchiveUrl: 'gs://staging.marktec-itesm.appspot.com/firebase-functions-source',
  name: 'projects/marktec-itesm/locations/us-central1/functions/verifyItesmDomain',
  entryPoint: 'verifyItesmDomain',
  timeout: '60s',
  availableMemoryMb: 256,
  labels: { 'deployment-tool': 'cli-firebase' },
  eventTrigger:
   { resource: 'projects/marktec-itesm',
     eventType: 'providers/firebase.auth/eventTypes/user.create' } }
 Tue Nov 14 2017 04:06:02 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:03.064Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:03 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:03.068Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:03 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:03.257Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:04 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:05.262Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:05 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:05.428Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:06 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:07.431Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:07 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:07.603Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:08 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:09.606Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:09 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:09.755Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:11.757Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:11 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:11.912Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:13.913Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:13 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:14.078Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:16.080Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:16 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:16.249Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:17 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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:18.252Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:18 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:18.405Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:20.406Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:20 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:20.588Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:22.591Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:22 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:22.753Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06: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="41,39,38,37,35", accept-ranges=none, connection=close
[2017-11-14T10:06:24.768Z] >>> HTTP REQUEST GET https://cloudfunctions.googleapis.com/v1beta2/operations/bWFya3RlYy1pdGVzbS91cy1jZW50cmFsMS92ZXJpZnlJdGVzbURvbWFpbi90SFM4NnhjSF9DUQ
 Tue Nov 14 2017 04:06:24 GMT-0600 (Central Standard Time (Mexico))
[2017-11-14T10:06:24.952Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer,
Origin,Accept-Encoding, date=Tue, 14 Nov 2017 10:06:25 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="41,39,38,37,35", accept-ranges=none, connection=close
+  functions[verifyItesmDomain]: Successful update operation.

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/marktec-itesm/overview

Komentar yang paling membantu

Masalah ini adalah rasa sakit yang nyata di pantat. Saya pikir itu harus diberikan prioritas tinggi:/

Semua 94 komentar

Terima kasih telah mengajukan! Kami tahu bahwa penerapan yang lambat adalah titik kesulitan utama untuk pengalaman fungsi, dan ini adalah sesuatu yang sedang kami upayakan untuk diselesaikan melalui berbagai strategi.

@laurenzlong
Sebagai pemula di Firebase pada pandangan pertama saya pikir saya mengacaukan sesuatu, karena penyebaran selalu berhenti di _functions: menyiapkan direktori fungsi untuk mengunggah..._ bagian.
Memberikan beberapa info tambahan (seperti: butuh 3-5 menit untuk menyelesaikannya) akan sangat bagus, sampai masalahnya terpecahkan.

Sebagai seorang pemula, saya menghabiskan banyak waktu untuk membatalkan pemikiran ini bahwa saya melakukan sesuatu yang salah.

Masalahnya agak jelas. Perintah init membuat folder 'modul node' yang sangat besar. Di mesin saya itu adalah: 22.903 File, 2.782 Folder. Kode menyalin semua itu ke folder temp.

Inilah yang saya lakukan:

  1. Menggunakan pernyataan cetak log, saya mengidentifikasi baris kode yang lambat. Ini di sini:
    https://github.com/firebase/firebase-tools/blob/master/lib/prepareFunctionsUpload.js#L26

Baris 26 di prepareFunctionsUpload.js:
fs.copySync(options.config.path(options.config.get('functions.source')), tmpdir.name);

  1. Saya mencetak parameter untuk panggilan penyalinan file itu. Di mesin saya itu adalah:
    C:\Users\thoma\StudioProjects\LSystemAndroid\firestorefunctions
    -> C:\Users\thoma\AppData\Local\Temp\fbfn_752624vejX0cv3GEJI

Folder fungsi dibuat oleh perintah CLI init. Ini terlihat seperti ini:

  • node_modules (ukuran besar)
  • .gitignore
  • index.js
  • package.json
  • pacakge-lock.json

Sepertinya saya bahwa perintah CLI init TIDAK seharusnya membuat folder node_modules itu. Ini 165MB besar. Tampaknya tidak masuk akal untuk ditambahkan ke setiap proyek.

@thomasfischersm

Sebenarnya bukan itu masalahnya. Node_modules tidak disalin ke folder sementara, seperti yang Anda lihat dari baris ini di sini: https://github.com/firebase/firebase-tools/blob/master/lib/prepareFunctionsUpload.js#L76

firebase init perlu menginstal semua modul simpul secara lokal di dalam folder sumber fungsi, jika tidak, melayani fungsi secara lokal tidak akan berfungsi, dan ekstraksi pemicu tidak akan berfungsi (inilah cara CLI memahami peristiwa mana yang memicu masing-masing berfungsi sehingga dapat menyebarkannya dengan benar).

Saya meletakkan baris cetak debug sebelum baris 26 dan sesudahnya. Garis itu memakan waktu beberapa menit.

Kemudian, saya menambahkan filter untuk mencetak file mana yang sedang disalin. Itu termasuk semua file node_modules.

Kemudian, saya mengubah filter untuk mengecualikan file node_module. Penyebarannya berkembang pesat sekarang. Namun beberapa saat kemudian, sepertinya skrip mencoba mengevaluasi kebenaran fungsi cloud. Kode itu gagal karena tidak ada dependensi perpustakaan.

Baris kode sumber yang Anda tunjuk tampaknya merupakan langkah selanjutnya. Sepertinya file (minus node_modules) diarsipkan ke dalam file zip sebelum diunggah ke cloud. Baris itu sepertinya tidak berjalan lambat di mesin saya.

Ya Anda benar, saya salah, node_modules disalin. Saya pikir itu adalah ide yang valid untuk tidak menyalin node_modules ke direktori temp. Apa yang sedikit memperumit ini adalah kenyataan bahwa CLI menulis ".runtimeconfig.json" ke folder temp sebelum memicu parsing, dan file ini diunggah dengan kode sumber fungsi lainnya, dan kami tidak ingin menulis file ini ke direktori kode sumber yang sebenarnya. Jadi mungkin ada solusi bagus yang keduanya meningkatkan kecepatan penyebaran dan memastikan tidak ada efek samping yang tidak diinginkan, tetapi saya harus bermain-main dengan sedikit. Anda juga dapat merasa bebas untuk membuat permintaan tarik.

Saya mengalami masalah yang sama. Mungkin ide yang baik untuk mencetak lebih banyak pesan selama langkah "mempersiapkan direktori..." sehingga pengguna tidak menganggap firebase-tools sedang hang.

Sunting: Ini ada di Ubuntu WSL. Di Linux, fase "persiapan" tidak berhenti. Langkah "membuat fungsi" bisa lambat, tetapi tidak sebanyak yang saya alami sebelumnya.

Masalah ini adalah rasa sakit yang nyata di pantat. Saya pikir itu harus diberikan prioritas tinggi:/

Saya mencoba menerapkan fungsi firebase ke proyek saya dan karena kesalahan ini saya harus menundanya.
Kesalahan ini membuat saya membuang banyak waktu.
semoga segera diperbaiki!

Masalah ini menjadi kendala utama. Sebagian besar karena saya menggunakan firestore dan dalam hal-hal seperti agregat, penghitung, dan kehadiran hanya dapat ditangani dengan baik oleh fungsi cloud dan hanya hang selama 5 menit setiap saat.

@PulpoEnPatineta Ini bukan kesalahan. Ini hanya masalah dengan waktu penerapan.

@McStuffins Jika mobil Anda membutuhkan waktu lima menit untuk menyala, apakah ini kesalahan atau hanya masalah dengan waktu mulai?

apakah ada perbaikan untuk ini? Ini benar-benar sangat lambat.

Saya melacak masalah ini dari awal, tetapi itu tidak pernah menjadi masalah bagi saya karena saya telah menyiapkan CD dan itu semua bekerja untuk saya. Saya juga tidak pernah menggunakan fungsi hanya untuk menguji apakah mereka berfungsi. Jadi pada dasarnya itu tidak masalah bagi saya.

Sampai hari ini, ketika saya menemukan batasan yang tidak terduga: Saya tidak dapat menerapkan fungsi saya lagi, karena penerapan ke produksi melebihi kuota harian (12.000 detik). Saya memiliki ~55 fungsi dengan berbagai pemicu (pubsub, firestore, https). Apakah itu terlalu banyak untuk ditangani?

Sekarang saya harus men-deploy aplikasi saya selama dua hari :rofl: :lollipop: :+1: :1st_place_medal: :coffin: :tada: :taco: :cactus: :dancer: :smiling_imp:

Terkadang, ketika saya menerapkan, itu sangat lambat, dan kemudian ada peringatan di terminal yang mengatakan "Kesalahan di lingkungan build"

@srinurp Silakan lihat permintaan tarik yang saya tautkan di atas, itu akan mengatasi sebagian masalah. Dan tim backend sedang bekerja untuk mengatasi bagian lain dari masalah ini (tetapi ini adalah pekerjaan yang sangat rumit, jadi kami menghargai kesabaran Anda.)

@merlinnot Kecuali Anda memperbarui kode untuk semua fungsi Anda dengan setiap penerapan, saya akan merekomendasikan menggunakan perintah --only untuk menyebarkan fungsi individu atau grup fungsi. Lihat https://firebase.google.com/docs/cli/#partial_deploys.

@McStuffins "Kesalahan dalam lingkungan build" biasanya menunjukkan masalah produksi, dalam hal ini silakan ajukan tiket dukungan di https://firebase.google.com/support/ , Anda dapat melihat apakah ada masalah produksi yang sedang berlangsung dengan mengunjungi Dasbor Status Firebase

@laurenzlong saya harus mengonfigurasi CI saya untuk secara otomatis mendeteksi perubahan di setiap fungsi di antara penerapan (termasuk menyelesaikan dependensi). Dan bagaimana jika saya memperbarui paket seperti firebase-functions , firebase-admin , lodash dll., yang saya gunakan di setiap fungsi?

@merlinnot Itu kasus penggunaan yang sangat sah. Kuota penerapan dikendalikan oleh Fungsi Google Cloud, saya akan merekomendasikan mengajukan permintaan pada pelacak masalah publik mereka: https://cloud.google.com/functions/docs/support

Untuk semua orang yang tertarik: https://issuetracker.google.com/issues/71385193

@laurenzlong Bisakah folder node_modules diabaikan saat menyalin sumber dan kemudian melakukan npm install --production atau yarn install --production ? Karena alat ini mungkin lebih cepat dari sekadar menyalin dan menempel.

@horacehylee
Ini mungkin merupakan perubahan yang menghancurkan. Beberapa orang mungkin (termasuk saya sendiri) masih mereferensikan paket dengan jalur relatif (seperti "nama-paket": "./externs/package.tgz"), sebagian besar karena masalah ( sekarang diperbaiki ) dengan repositori pribadi. Alat ini harus mempertimbangkan semua kasus sudut ini.

Hal lainnya adalah caching: jika Google mengunduh paket atas nama Anda, mereka harus menerapkan beberapa mekanisme caching internal. Kita semua memiliki cache lokal di komputer kita (npm dan yarn memiliki mekanisme caching), oleh karena itu kita tidak mematikan server npm ;)

Beberapa orang mungkin juga hanya ingin menguji beberapa perubahan di perpustakaan eksternal. Jauh lebih mudah untuk hanya mengubah file dan menerapkan fungsinya daripada membuat fork, membuat perubahan, sementara mengubah referensi ke paket, ...

Intinya: berfungsi dengan baik, biarkan seperti sekarang :+1:

@horacehylee @merlinnot Terima kasih untuk 2 sennya. Silakan lihat https://github.com/firebase/firebase-tools/pull/578 , rilis CLI berikutnya tidak akan lagi menyalin periode folder sumber fungsi.

Saya benar-benar tidak yakin apa yang dapat dilakukan firebase yang membutuhkan MENIT untuk menerapkan fungsi 5 baris, 1kb, pada enam mesin inti 4GHz, dengan koneksi serat 1Gbps.

Saya tahu kedengarannya seperti saya sedang kesal, tetapi saya benar-benar ingin tahu apa yang terjadi selama "mempersiapkan direktori untuk diunggah". Ada yang tahu sebenarnya?

Menyalin direktori fungsi Anda, termasuk modul simpul, ke direktori tmp.

Rilis kami berikutnya akan membahas ini dan tidak perlu lagi menyalin sebelumnya
menyebarkan.

Pada Minggu, 7 Januari 2018, 17:05 hmexx [email protected] menulis:

Saya benar-benar tidak yakin apa yang bisa dilakukan firebase yang membutuhkan MENIT untuk
menyebarkan 5 baris, fungsi 1kb, pada enam mesin inti 4GHz, duduk di a
Koneksi serat 1Gbps.

Saya tahu kedengarannya seperti saya sedang kencing, tapi saya benar-benar ingin tahu apa
sedang terjadi selama "mempersiapkan direktori untuk diunggah". Ada yang tahu sebenarnya?


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/536#issuecomment-355868154 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AAAD_nUptJWFuYGvEXI0MwmQR-bG9_MKks5tIWm1gaJpZM4QdF3g
.

@mbleigh

Benar. yang menjelaskannya. Ini semacam komedi melihat workstation menjadi gila selama satu atau dua menit, hanya untuk memiliki baris berikutnya yang mencetak "fungsi paket ( 37.55kb !!!) berhasil diunggah" lol

Nantikan rilis berikutnya. Thx untuk menanggapi.

H.

Hari 19. Firebase masih di-deploy. *ambil popcorn*

Ya.

Kapan rilis berikutnya dijadwalkan, dan berapa % peningkatan waktu penerapan yang diharapkan?

Hanya untuk mengetahui apakah akan terus menyusuri jalan ini.

Rilis akan terjadi minggu ini, dan Anda dapat mengharapkan "Mempersiapkan
fungsi direktori untuk menyebarkan" langkah untuk pergi jauh lebih cepat (saya tidak
memiliki angka pasti). Bagian lain dari penyebaran akan tetap tidak berubah.

Pada Senin, 15 Januari 2018 pukul 12:42 hmexx [email protected] menulis:

Ya.

Kapan rilis berikutnya dijadwalkan, dan berapa % peningkatan dalam penerapan
waktu yang harus kita harapkan?

Hanya untuk mengetahui apakah akan terus menyusuri jalan ini.


Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/536#issuecomment-357784792 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AAAD_vaj-WngS9dMj7j5Q2AesM0tNMvVks5tK7hBgaJpZM4QdF3g
.

Ini dirilis!

@mbleigh Apakah ini dalam rilis 3.17.4?

@jkossis v3.17.0

Dari catatan rilis:

Jika Anda menerapkan fungsi, Anda harus memperbarui SDK fungsi firebase ke yang terbaru dengan menjalankan "npm i --save firebase-functions@latest " di dalam direktori fungsi Anda. Hal ini memungkinkan penyebaran fungsi yang lebih cepat.

dari menit ke detik: kerja bagus!

Bagi saya ini masih membutuhkan waktu beberapa menit.

Saya punya [email protected] dan [email protected] . Apa yang dapat saya lakukan untuk membantu men-debug masalah ini lebih lanjut?

Berikut adalah output waktunya dari penerapan fungsi saja. Saya telah mengubah nama tetapi itu adalah kombinasi dari titik akhir REST, basis data, dan pemicu auth.

➜  functions git:(master) ✗ firebase --version
3.17.4
➜  functions git:(master) ✗ time firebase deploy --only functions

=== Deploying to 'XXX'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (123.07 KB) for uploading
✔  functions: functions folder uploaded successfully
i  functions: updating function 1...
i  functions: updating function 2...
i  functions: updating function 3...
i  functions: updating function 4...
i  functions: updating function 5...
i  functions: updating function 6...
✔  functions[1]: Successful update operation.
Function URL (1): https://us-central1-XXX.cloudfunctions.net/1
✔  functions[3]: Successful update operation.
✔  functions[4]: Successful update operation.
✔  functions[5]: Successful update operation.
✔  functions[6]: Successful update operation.
✔  functions[2]: Successful update operation.
Function URL (2): https://us-central1-XXX.cloudfunctions.net/2

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/XXX/overview
firebase deploy --only functions  4.59s user 1.07s system 1% cpu 6:09.26 total

@adamduren perbaikannya adalah menghabiskan waktu berlebihan di preparing functions directory for uploading...

Penyebarannya sendiri masih bisa memakan waktu yang cukup lama.

tumpukan dalam situasi yang sama:
screen shot 2018-01-31 at 18 57 02

"firebase-admin": "^5.8.2",
"firebase-functions": "^0.8.1",

npm install -g npm@latest memberi saya masukan yang sedikit berbeda, dan menghapus firebase-cli tampaknya juga mengubah sesuatu.

screen shot 2018-01-31 at 19 11 38

memperbarui:

oke, setelah menjalankan npm install -g firebase-tools akhirnya berhasil. Kudos to https://stackoverflow.com/questions/48531993/firebase-config-variables-are-not-available-error-with-deploying-functions#comment84098334_48531993

Hai, saya mengalami masalah pada titik yang sama ("mempersiapkan direktori fungsi ..")
tetapi dalam kasus saya butuh lebih dari 25/30 menit untuk menyelesaikannya
Saya memiliki 4 dependensi pribadi yang beratnya dikompresi sekitar 2,20 mb
Saya menemukan itu satu-satunya cara untuk memasukkan dependensi pribadi, sebagai file terkompresi.
apakah saya melakukan sesuatu yang salah? atau apakah ini cara yang seharusnya berhasil?

2018-5-9
firebase deploy masih lambat, tidak yakin mengapa
image

Sudahkah Anda memperbarui ke versi terakhir? Saya memperbarui minggu lalu dan sekarang penyebaran saya membutuhkan waktu 1-3 menit (dari 25/30)

Saya melihat waktu penerapan 4+ menit untuk sesuatu yang sederhana seperti:

const functions = require('firebase-functions')

exports.test = functions.https.onRequest((req, res) => {
  res.send('Hello World')
})

i functions: updating function test... adalah baris yang hang.
Tidak pernah selambat ini!

@Robula Sudahkah Anda memperbarui firebase-tools ke versi terbaru?

Ya saya percaya begitu. firebase —version melaporkan 3.18.6.

Anda menggunakan versi yang lebih baru dari saya. Saya tidak yakin apakah mungkin mereka terus mentransfer folder node_modules lagi di 3.18.6, tetapi saat ini dengan 3.18.4, semuanya tampak berjalan dengan baik...

Belum ada regresi dalam strategi penerapan di versi firebase-tools terbaru (folder node_modules tidak disalin), namun waktu penerapan juga bervariasi dari mesin ke mesin dan dari waktu ke waktu. Penyebaran awal suatu fungsi juga lebih lambat daripada pembaruan berikutnya.

Saya melihat waktu penerapan selama langkah preparing functions directory for uploading... memakan waktu hampir 7 menit pada langkah ini saja saat dijalankan secara lokal. Langkah pra-penerapan untuk pembangunan memakan waktu sekitar 5 detik secara lokal. Semua langkah lain dalam proses penerapan sebagai dijalankan dari debug sebagai sangat cepat. Saya mendapatkan bahwa penyebaran bisa agak lambat, tetapi saya juga menggunakan lambda AWS untuk bekerja dan penyebaran lambda yang sangat besar jauh lebih cepat dari ini, dalam urutan 2 dua 3 menit, termasuk pemasangan & pembuatan paket python.

Bahkan menyebarkan dari google cloud build dibutuhkan 2 hingga 3 menit, dibandingkan 10 hingga 20 detik di aws lambda. Saya hanya ingin bertanya, apakah klip meng-zip seluruh folder fungsi sebelum mengunggah?

@laurenzlong , dapatkah Anda menguraikan jika fungsinya sudah digunakan secara paralel, atau jika pengoptimalan ini sedang berjalan?

Fungsi selalu digunakan secara paralel. Namun, harap perhatikan bahwa menerapkan 10 fungsi secara paralel masih lebih lambat daripada menerapkan satu fungsi.

+1 Itu menyebarkan fungsi sangat lambat. Saya mengikuti tutorial pekerjaan cron untuk membuat fungsi centang setiap jam, nada pertama saya, dan perlu waktu satu menit untuk menerapkannya setiap saat.

@laurenzlong terima kasih banyak telah menanggapi dan terima kasih atas kerja keras Anda di Firebase!

Apakah ada rencana aktif untuk meningkatkan waktu penerapan? Saya bertanya karena meskipun kami menyukai Firebase, kami sebenarnya berpikir untuk menjauh darinya karena waktu penerapan yang lambat. Kami memiliki sekitar 47 fungsi cloud dan secara teratur membutuhkan waktu 3-6 menit untuk penerapan kami. Bandingkan dengan git push heroku master yang akan memakan waktu sekitar 20-30 detik untuk menyebarkan volume kode yang sama ke Heroku. Dan kode itu kemudian akan langsung berjalan di Heroku. Dengan Firebase, kita harus menunggu 20-30 detik lagi (acak) setelah penerapan sebelum fungsi yang diterapkan benar-benar berjalan (selama waktu ini, campuran fungsi baru dan lama berjalan).

Jadi bandingkan pengalaman penerapan:

*** Heroku:

git push heroku master

20-30s later ...

All newly-deployed functions are now running in a consistent/atomic way

*** Firebase:

firebase deploy --only functions

180-360s later ...

Functions are deployed but only some of the new ones are running, some old ones are still running

20-30s later ... 

All new functions running

Juga sulit untuk melakukan penerapan atom dengan Firebase karena setelah penerapan, ada periode waktu di mana beberapa fungsi baru, sebut saja v_n+1 berjalan bersama beberapa fungsi lama v_n . Jadi, jika Anda melakukan pembaruan besar, Anda memiliki campuran fungsi baru dan lama yang mungkin berjalan menggunakan format data atau algoritme yang berbeda. Ini jauh lebih tidak aman daripada penyebaran Heroku di mana semua fungsi baru diterapkan dan hanya fungsi baru yang berjalan atau tidak ada yang diterapkan.

Selanjutnya, terkadang beberapa dari 47 fungsi kami akan gagal diterapkan dengan kesalahan seperti

⚠  functions[retrieveFavorites(us-central1)]: Deployment error.
Server Error. getaddrinfo ENOTFOUND cloudfunctions.googleapis.com cloudfunctions.googleapis.com:443

Kami menggunakan internet Gigabit simetris yang sangat andal, jadi masalahnya bukan pada jaringan kami.

Jadi pikirkan penyebaran Heroku seperti transaksi DB atom (semua atau tidak sama sekali) sedangkan penyebaran Firebase lebih seperti akhirnya konsisten dengan kegagalan sebagian ... Ini membuat operasi pengembang jauh lebih sulit, terutama jika Anda mendorong perbaikan bug di tengah malam sebagai tanggapan atas sebuah halaman.

Terus terang, pengalaman penerapan di Firebase secara objektif lebih lambat dan kurang dapat diandalkan daripada di Heroku atau AWS ... Jangan salah paham, kami menyukai Firebase dan kami sangat menghargai semua kerja keras Anda. Saya tidak bermaksud ini terdengar seperti serangan, ini bukan masalah pribadi, tetapi kami membutuhkan Firebase untuk melakukan yang lebih baik di sini atau kami berpikir untuk pergi ke tempat lain karena penerapan terlalu menyakitkan.

Sekali lagi terima kasih atas kerja keras Anda di Firebase. Kami menghargai bantuan Anda :-).

Terima kasih telah berbagi titik data Anda! Kami memang memiliki beberapa rencana untuk meningkatkan ini terutama untuk menerapkan banyak fungsi secara bersamaan (terutama meningkatkan langkah pembangunan sisi server setelah panggilan API dibuat untuk membuat/memperbarui fungsi). Namun, ini adalah perubahan infrastruktur yang akan memakan waktu seperempat, jadi kami sangat menghargai kesabaran Anda untuk sementara.

Anda mungkin telah mempertimbangkan hal ini, tetapi Anda dapat membuat skrip di saluran CI/CD Anda yang mendeteksi fungsi mana yang telah diedit, dan hanya menerapkan yang memiliki flag --only . Itu akan secara dramatis meningkatkan kecepatan penerapan Anda. Lihat video ini sebagai contoh: https://www.youtube.com/watch?v=iyGHW4UQ_Ts

@laurenzlong Terima kasih atas infonya, Lauren. Namun, saya hanya memiliki satu fungsi cloud kecil dan masih membutuhkan waktu sekitar 1 menit untuk menerapkannya bahkan setelah melakukan perubahan terkecil. Saya juga menggunakan flag itu meskipun saya hanya memiliki satu fungsi cloud. Sepertinya ada yang tidak beres terjadi di sini.

Masih membutuhkan waktu beberapa menit pada April 2019 - Firebase versi 6.6.0 - yang saya lakukan hanyalah mengikuti tutorial di sini: https://firebase.google.com/docs/functions/get-started

Baru saja mengunduh dan mengambil beberapa menit setiap kali saya "menyebarkan firebase"

Beberapa hari terakhir penggelaran bahkan hosting membutuhkan beberapa menit, ketika butuh seperti 10-15 detik beberapa minggu yang lalu. Menyebarkan fungsi juga habis.

Dan halaman status Firebase berwarna hijau https://status.firebase.google.com/ .

Apakah ada yang tahu mengapa hal ini terjadi?

Menggunakan firebase-tools 7.0.0

$ firebase deploy --only=hosting --token xxx

=== Deploying to 'xxx'...

i  deploying hosting
i  hosting[xxx]: beginning deploy...
i  hosting[xxx]: found 1959 files in public
✔  hosting[xxx]: file upload complete
i  hosting[xxx]: finalizing version...
✔  hosting[xxx]: version finalized
i  hosting[xxx]: releasing new version...
✔  hosting[xxx]: release complete
✔  hosting: Finished running postdeploy script.

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/xxx/overview
Hosting URL: https://xxx.firebaseapp.com
✨  Done in 181.75s

@laurenzlong-

Namun, ini adalah perubahan infrastruktur yang akan memakan waktu seperempat, jadi kami sangat menghargai kesabaran Anda untuk sementara.

Adakah pembaruan sisi infrastruktur sejak catatan terakhir Anda beberapa kuartal yang lalu? Sampai perubahan ini dilakukan, apakah mungkin untuk membuka kembali masalah ini? Ditutup tampaknya bukan status yang sesuai kecuali pelacakan telah dipindahkan ke masalah yang berbeda/terkait.

Firebase functions masih sangat lambat setelah semuanya dibuat/diunggah dan fungsinya dibuat/diperbarui di sisi server. Seperti yang dikatakan orang lain, ini adalah peredam kecepatan pengembangan utama.

firebase --version
7.1.0

Banyak terima kasih telah mempertimbangkan!

@repentsinner proyek backend untuk meningkatkan waktu build/deploy masih berlangsung (dan berjalan dengan baik!) tetapi masih belum dirilis.

Sudahkah Anda mencoba menggunakan emulator (melalui firebase emulators:start ) untuk mempercepat proses pengembangan Anda? Jika demikian, kami ingin mendapatkan tanggapan Anda!

Terima kasih atas pembaruannya @samtstern.

Saya belum mencoba emulator - Saya menggunakan functions.https.onCall dari aplikasi flutter serta data di firestore, dan sepertinya (saat ini juga) mengarahkan semua yang ada di build uji aplikasi ke workstation pengembangan saya lebih banyak upaya daripada menunggu penyebaran.

Saya kira saya dapat menggunakan waktu yang saya tunggu untuk melihat ini .

Selamat Tahun Baru untuk masalah ini yang masih Tertutup dan masih belum diperbaiki!

Mungkin admin atau OP dapat mengganti nama masalah ini menjadi "Mempersiapkan direktori fungsi untuk penyebaran sangat lambat" karena tampaknya telah ditutup hanya berdasarkan perbaikan pada tahap proses penyebaran keseluruhan.

Kami kemudian dapat membuka masalah baru "Menerapkan fungsi sangat lambat" karena ... menerapkan fungsi masih sangat lambat

Masalah ini telah ditutup karena tidak ada lagi yang dapat kami lakukan di sisi CLI untuk meningkatkan waktu penerapan. Untuk pengembangan lokal, kami terus berinvestasi dalam emulator, kami berharap orang-orang harus menjalankan firebase deploy hanya ketika mereka menerapkan ke prod dan bukan sebagai bagian dari siklus hidup dev mereka.

Perubahan backend masih dalam proses. Seperti yang Anda tahu, ada penundaan yang tidak terduga.

Terima kasih atas klarifikasi @samtstern , jadi saya kira masalah/permintaan terhadap firebase/firebase-tools hanya berlaku untuk CLI? Akan berburu repo/proyek yang mencakup backend.

Mengenai pengembangan lokal - dari sisi publik sepertinya Google benar-benar mendorong integrasi Firebase dan Flutter yang tampaknya bekerja sangat baik bersama-sama, tetapi dalam praktiknya kami mengalami inkonsistensi dev-time seperti ini. Saya melihat sekilas emulator seperti yang disarankan ketika menemukan masalah ini, tetapi tampaknya emulator itu tidak mendukung alur kerja pengembangan Firebase plus Flutter yang terintegrasi sama sekali, tentu saja tidak semulus yang dilakukan melalui backend cloud. Saya belum berputar kembali untuk melihat apakah ini telah membaik akhir-akhir ini, tetapi tampaknya tidak mungkin.

@repentsinner ya repo ini hanya melacak pekerjaan CLI. Tentu saja kami mencoba menjawab apa pun yang masuk tetapi seringkali kami harus menutup masalah ketika tidak ada yang produktif yang bisa kami lakukan di sini. Backend kami bukan open source, itulah sebabnya kami biasanya mengarahkan orang ke dukungan firebase untuk mengajukan laporan bug atau permintaan fitur tentang hal-hal umum Firebase.

Untuk Flutter, kami menyukainya (lihat: https://github.com/FirebaseExtended/flutterfire) tetapi penting untuk dicatat bahwa ini bukan platform Firebase resmi yang berarti kami tidak dapat menawarkan dukungan penuh untuk masalah seperti yang kami lakukan di Android/iOS/Web asli. Mungkin itu akan berubah suatu hari nanti, tetapi untuk saat ini, itulah situasinya.

Jika Anda memiliki pertanyaan tentang cara menghubungkan aplikasi Flutter Anda ke Firebase Emulators, buka masalah di repo FlutterFire dan cc saya, maka saya juga bisa melibatkan orang-orang Flutter yang tepat.

Mengerti, terima kasih atas klarifikasinya @samtstern! Saya telah pindah ke proyek lain untuk saat ini, tetapi akan mencari di repo FlutterFire ketika saya kembali ke hal ini.

Emulator tidak mendukung konteks auth sehingga 100% IMO tidak berguna sama sekali.

Saya akhirnya menemukan bahwa penerapan saya membeku karena saya mencoba menggunakan dotenv

Hanya menjulurkan kepalaku untuk mengingatkan orang-orang bahwa ini masih merupakan titik yang menyakitkan ️

Untuk orang-orang yang masih menemukan ini - satu hal yang menurut saya bermanfaat adalah memanfaatkan functions.ignore untuk menghindari mengunggah bloat yang tidak perlu. Saya pikir yang sangat bagus untuk disertakan adalah .git :
{ "functions": { "ignore": ["node_modules", ".git", ".gitignore", ".nyc_output", ".runtimeconfig.json", "firebase-debug.log", "tslint.json", "tests"] }

Saya menjatuhkan fungsi sepenuhnya karena alur kerja dev sangat menyakitkan.

Untuk orang-orang yang masih menemukan ini - satu hal yang menurut saya bermanfaat adalah memanfaatkan functions.ignore untuk menghindari mengunggah bloat yang tidak perlu. Saya pikir yang sangat bagus untuk disertakan adalah .git :

"functions": {
    "ignore": ["node_modules", ".git", ".gitignore", ".nyc_output", ".runtimeconfig.json", "firebase-debug.log", "tslint.json", "tests"]
  }

Ini benar-benar menghasilkan beberapa hasil. Berjalan di sekitar 65-70% dari waktu sekarang. Terima kasih!

Menarik -- secara default subdirektori functions berada di bawah root proyek sehingga tidak akan memiliki folder .git . Teman-teman untuk siapa ini membantu -- seperti apa struktur direktori Anda?

@mbleigh Benar. Tebakan terbaik saya adalah pintar tentang ini, dan menerapkan ini ke direktori fungsi.

@mbleigh Saya punya repositori fungsi-saja jadi sepertinya agak konyol untuk memiliki direktori fungsi. Semuanya bergeser ke akar.

Itu ekstrak dari firebase.json saya :

  "functions": {
    "ignore": [
      "__mocks__",
      ".cache",
      ".commitlintrc.yaml",
      ".dependabot",
      ".editorconfig",
      ".eslintrc.yaml",
      ".firebase",
      ".firebaserc",
      ".git",
      ".gitattributes",
      ".github",
      ".gitignore",
      ".lintstagedrc.js",
      ".nvmrc",
      ".prettierignore",
      ".prettierrc.yaml",
      ".vscode",
      "CHANGELOG.md",
      "cloudbuild.yaml",
      "codecov.yml",
      "CONTRIBUTING.md",
      "coverage",
      "cSpell.json",
      "decisions",
      "firebase.json",
      "firestore.indexes.json",
      "jest.config.js",
      "node_modules",
      "README.md",
      "rfcs",
      "scripts",
      "src",
      "test",
      "tsconfig.json",
      "tsconfig.production.json"
    ],
    "source": "."
  },

Saya akan dengan senang hati menggantinya dengan:
```
{
"termasuk": ["lib", "package.json", "package-lock.json"]
}

FWIW Saya percaya ini menerima gumpalan sehingga Anda mungkin dapat melakukan:

{
  "exclude": ["!{lib,package.json,package-lock.json}"]
}

Baru saja memulai fungsi cloud, dan waktu penerapannya menyakitkan.

waktu penyebaran yang menyakitkan :(

Aplikasi firebase kami memiliki 60 fungsi cloud yang berjalan di dalamnya sekarang. Pada awalnya kami mulai mengalami banyak kegagalan penerapan karena kuota, jadi kami kemudian memecahnya menjadi beberapa kelompok seperti yang disarankan oleh dokumen. Ini diterapkan secara konsisten sekarang, tetapi setiap batch membutuhkan waktu ~3 menit untuk diterapkan sebagai bagian dari tindakan GitHub CI pada runner default. Batch masing-masing sekitar 6 jadi total 10 batch membuat waktu penerapan fungsi kami sekitar 30 menit.

Fungsi-fungsi itu sendiri adalah potongan kode yang sangat kecil dengan ketergantungan minimal. Tidak yakin apa lagi yang bisa kita lakukan untuk mempercepat jalur pipa.

Sungguh miris mendengarnya. Pendekatan lain adalah menggabungkan beberapa titik masuk/rute ke dalam satu fungsi. Ini jelas bukan yang terbaik dari pemisahan masalah/ukuran/keamanan, tetapi inilah yang kami lakukan dengan semua titik akhir API kami (titik masuk tunggal yang kemudian menggunakan router internal), dan sejak itu tidak mengalami banyak batasan kuota (tetapi mereka kadang-kadang terjadi).

Namun, batas kuota ini tampaknya sangat rendah, karena dokumen resmi mencantumkan "80 per 100 detik" untuk "Panggilan untuk menerapkan atau menghapus fungsi melalui Cloud Functions API". Saya berasumsi dukungan Google tidak dapat meningkatkan batas ini lebih jauh?

Namun, batas kuota ini tampaknya sangat rendah, karena dokumen resmi mencantumkan "80 per 100 detik" untuk "Panggilan untuk menerapkan atau menghapus fungsi melalui Cloud Functions API". Saya berasumsi dukungan Google tidak dapat meningkatkan batas ini lebih jauh?

@dinvlad Saya menanyakan penjualan dan dukungan tentang peningkatan batas API itu, secara eksplisit dinonaktifkan/diklik di bagian kuota konsol GCP. Akhirnya bisa mendapatkan seorang insinyur Google di hangouts yang memberi tahu saya "Kuota itu tidak berubah".... jadi saya rasa tidak.

Kami telah menambahkan .git ke daftar abaikan standar di rilis berikutnya:
https://github.com/firebase/firebase-tools/pull/2395

Itu akan mempercepat rilis untuk beberapa orang. Tentu saja tidak banyak yang dapat kami (tim Firebase CLI) lakukan tentang latensi pada backend Cloud Functions.

pastikan untuk melakukan firebase deploy --only hosting saat Anda tidak memperbarui fungsi

Di sini kami juga telah mengelompokkan fungsionalitas terkait ke dalam suatu fungsi, sehingga akhirnya terlihat seperti "satu fungsi per area fitur" daripada "satu fungsi per butir fungsi individu".

Karakteristik kinerja penerapan sangat mendorong arsitektur dari apa yang masuk ke dalam satu fungsi!

Kapan dan mengapa masalah ini ditutup. Dibuka pada November 2017 dan sepertinya masih bermasalah seperti dulu. Saya tidak dapat melihat referensi 'Tutup' di sini dan saya akan tertarik untuk mengetahui mengapa itu ditutup.

Saya tidak mengeluh, hanya bertanya-tanya. Saya yakin ini sedang dikerjakan tetapi akan lebih baik untuk mengetahui kemajuan apa pun.

@chriscurnow ditutup karena penyebab sebenarnya tampaknya adalah karena sisi server (sumber tertutup) bukan alat CLI, meskipun itu memanifestasikan kepada pengguna akhir sebagai masalah CLI (per @samtstern di https://github.com /firebase/firebase-tools/issues/536#issuecomment-572830647).

Sayangnya tidak ada pelacak publik yang bagus untuk bagian belakang, jadi kami mendapatkan pembaruan di sini :(

Bagaimana kita bisa membuka bug ini untuk google untuk memperbaikinya di backend mereka?
Ini sangat lambat

Seperti, apa gunanya menggunakan fungsi firebase jika akan memakan waktu selama ini

Hai teman-teman, mungkin kita semua bisa melaporkan masalah ini ke google dan mungkin mereka mau mendengarkan?
https://firebase.google.com/support/troubleshooter/contact

Setiap kali saya mencoba menggunakan sesuatu dari google untuk sesuatu yang penting, saya diingatkan bahwa mereka adalah salah satu perusahaan yang paling tidak ramah konsumen, tapi hei, kita bisa mencobanya.

@RenFontes Saya baru saja mengajukan Kasus 0075974: Menyebarkan fungsi firebase sangat lambat sehingga tidak dapat digunakan dengan dukungan Firebase. Saya akan memperbarui pesan ini dengan apa pun yang mereka kembalikan.

Dimungkinkan untuk menerapkan fungsi tertentu. Tidak bisakah CLI memiliki "pelacak checksum" untuk setiap fungsi dan hanya menyebarkan yang diubah (dan juga, melacak semua yang digunakannya: vars, paket, ...)?

@SrBrahma yakin, tetapi masalahnya masih ada bahkan jika Anda hanya menggunakan satu fungsi (misalnya, penyebaran fungsi tunggal masih bisa gagal karena batas waktu).

Seharusnya tidak harus jatuh pada pengguna untuk mengelola penyebaran fungsi batching, dan dalam banyak kasus pembaruan fungsi diperlukan secara atom, oleh karena itu tidak dapat dipisah/dibatch.

Hargai saran untuk solusi, tetapi yang benar-benar kami butuhkan di sini adalah SLA dari Google dan kepatuhan mereka terhadapnya.

Benarkah Fungsi Firebase Terkadang? (mungkin sering) kinerjanya buruk.. Ini sangat lambat.. Anda harus mendukung Rust daripada.. Go? apakah ini jauh lebih cepat daripada Node?

Masih menunggu Google untuk meningkatkan waktu penerapan Fungsi Google kan?
Beralih dari PWA ke SSR memaksa saya untuk menunggu 7 menit lagi untuk setiap penerapan

Apakah halaman ini membantu?
0 / 5 - 0 peringkat