Firebase-tools: Tidak dapat membaca properti 'menyebarkan' yang tidak ditentukan

Dibuat pada 1 Mei 2019  ·  36Komentar  ·  Sumber: firebase/firebase-tools

Info lingkungan


firebase-tools:
[email protected]


Peron:
MacOS

Kasus cobaan

MacOS, Node 10.15.3, [email protected]

Langkah-langkah untuk mereproduksi

Buat dua situs hosting di konsol firebase.
Lari
'firebase target: terapkan hosting dev firebase-hosting-id'
Lari
'firebase deploy --only hosting: dev '

Perilaku yang diharapkan

Penerapan berhasil

Perilaku sebenarnya

[info] Project Console: https://console.firebase.google.com/project/project-name/overview
[debug] [2019-05-01T19:12:12.726Z] TypeError: Cannot read property 'deploys' of undefined
    at /Users/reeda/.nvm/versions/node/v10.15.3/lib/node_modules/firebase-tools/lib/deploy/index.js:88:36
    at process._tickCallback (internal/process/next_tick.js:68:7)
[error] 
[error] Error: An unexpected error has occurred.
hosting bug

Komentar yang paling membantu

Saya menyelesaikan milik saya dengan memastikan:

  1. .firebaserc harus memiliki targets.<PROJECT_ID>.hosting.<TARGET_NAME> = [ "<HOST_ID" ]
{
  "projects": {
    "default": "my-project-id"
  },
  "targets": {
    "my-project-id": {
      "hosting": {
        "my-blog": [
          "my-blog-host-id"
        ]
      }
    }
  }
}

Bagian targets dapat dibuat menggunakan perintah firebase target:apply hosting my-blog my-blog-host-id

  1. firebase.json harus memiliki hosting sebagai array, dan itemnya harus memiliki target: <TARGET_NAME>
{
  "hosting": [{
    "target": "my-blog",
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }]
}

Bagian yang penting adalah membuat hosting array, dan menambahkan target ke itemnya.

Semua 36 komentar

Ada beberapa penyesuaian dalam aliran ini baru-baru ini. Kesalahan ini berasal dari (dalam sumber): https://github.com/firebase/firebase-tools/blob/master/src/deploy/index.js#L111

@Memeriaj dapatkah Anda melihat karena Anda telah berurusan dengan ini akhir-akhir ini?

Saya rasa saya mungkin tahu apa yang sedang terjadi di sini. Apakah file konfigurasi firebase.json memiliki "target": "dev" di dalamnya? Saya percaya bahwa kami menyaring semua konfigurasi yang tidak cocok dengan hosintg:dev dan kami ditinggalkan dengan array kosong. Kami kemudian melakukan semua langkah penerapan untuk larik kosong itu, secara efektif tidak melakukan apa pun. Kemudian di bagian akhir kami menampilkan tautan konsol dan tautan ke Situs Hosting Anda yang baru digunakan, di mana kesalahan ini muncul karena kami tidak benar-benar menerapkan apa pun.

Kami pasti membutuhkan kesalahan yang tepat dalam kasus ini yang menjelaskan bahwa kami tidak menerapkan apa pun.

(tidak terkait dengan masalah: umumnya Anda ingin peralihan tingkat lingkungan Anda dilakukan pada tingkat proyek Firebase dan bukan di Situs Hosting yang berbeda dalam proyek yang sama (meskipun Anda mungkin memiliki Situs untuk blog, Situs untuk aplikasi web, dan Situs untuk Dokumen Anda yang semuanya berada di lingkungan yang sama di Situs Hosting yang berbeda pada proyek yang sama). Hal ini terutama karena hal-hal seperti Firebase Auth hanya memiliki satu instance dalam sebuah proyek. Idealnya file firebase.json adalah diatur sedemikian rupa sehingga Anda dapat menghasilkan sesuatu seperti firebase use dev , firebase deploy , periksa dev untuk memastikan semuanya berfungsi, firebase use staging , firebase deploy , ...)

{ "firestore": { "rules": "firestore.rules", "indexes": "firestore.indexes.json" }, "hosting": { "public": "build", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites": [ { "source": "**", "destination": "/index.html" } ] }, "functions": { "predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint" ] } }

Saya pikir konfigurasi yang Anda sebutkan ada di file firebase bashrc dan bukan di file json firebase.

Di bawah bagian hosting dari file firebase.json Anda harus memiliki "target": "dev" agar firebase deploy --only hosting:dev berfungsi. Bendera --only berfungsi seperti filter dan tanpa bidang target dalam konfigurasi Hosting Anda, maka CLI tidak akan menerapkan apa pun (yang seharusnya merupakan kesalahan dengan pesan yang berguna, tetapi saat ini hanya menerima secara membabi buta Itu).

Maaf, tidak jelas di mana di json untuk meletakkan bidang target, apakah saya akan meletakkan ini di root json (tidak berfungsi) atau harus di root hosting (juga tidak berfungsi untuk saya).

Juga file firebaserc saya, mereferensikan proyek root saya tetapi tidak memiliki referensi apa pun ke situs hosting kedua saya, jadi saya tidak yakin bagaimana alat CLI akan dapat memahami ke mana harus menerapkan.

Ini harus masuk ke bagian Hosting dari file firebase.json sehingga akan terlihat seperti:

{
// ...
  "hosting": [{ // Can be an array and have multiple configs, or an object if you've only got a single config
    "target": "blog",
    "public": "build/blog"
    // ...
  }],
// ...
}

Halaman dokumen ini telah menjelaskan lebih lanjut tentang setiap langkah dan berbicara sedikit tentang mengapa Anda mungkin menggunakan target dan beberapa Situs juga.

Dengan firebase target:apply hosting dev firebase-hosting-id maka firebase-hosting-id harus menjadi nama Situs yang Anda rencanakan untuk diterapkan. Ini menetapkan target pada proyek yang saat ini Anda jalankan di CLI, yang berasal dari perintah firebase use . Tapi mungkin saya salah paham tentang apa yang ingin Anda capai.

Terima kasih, saya tampaknya membuat kemajuan tetapi sekarang saya mendapatkan entitas kesalahan 404 tidak ditemukan.
Jadi katakanlah proyek saya di firebase adalah reedy-1 dan target saya adalah reedy-1-api
Ketika saya menambahkan target saya di hosting sebagai reedy-1-api, ketika saya mencoba menerapkannya, itu mengeluh bahwa entitas tidak ditemukan.
Saya bisa melihat di file firebaserc saya, di bawah target

"targets": {
   "reedy-1": {
      "hosting": {
         "dev-api": [
           "reedy-1-api"
         ]
      }
   }
}

Cuplikan dari file .firebaserc tampak benar bagi saya.

Kemungkinan masalah (Anda mungkin telah memeriksanya, tetapi saya mencantumkannya untuk berjaga-jaga jika orang lain tersandung pada ini nanti):

  • Pastikan Anda menggunakan proyek yang tepat dengan firebase use
  • Pastikan ID proyek sudah benar (ini harus dilakukan untuk Anda melalui daftar proyek di firebase use --add )
  • Pastikan nama Situs sudah benar (mudah ditemukan melalui <site-name>.firebaseapp.com )

Jika Anda mencoba menerapkan dengan tanda debug di bagian mana yang mengembalikan 404? Saya menduga bahwa itu akan datang dari POST https://firebasehosting.googleapis.com/v1beta1/sites/<site-name>/versions karena itu adalah permintaan pertama dari penerapan Hosting yang sebenarnya. Jika itu masalahnya, menurut saya ada yang salah dengan nama Situs yang Anda tetapkan sebagai target. Jika ini adalah permintaan sebelumnya maka tebakan terbaik saya adalah ada sesuatu dengan proyek Anda.

Oke, berhasil mengetahui apa yang sedang terjadi.
Anda memerlukan pesan kesalahan yang lebih baik untuk ini juga, jadi JIKA Anda tidak menggunakan api dan di atasnya, pesan kesalahan adalah 404, tidak jelas bahwa saya tidak dapat menerapkan karena paket harga saya.
Setelah meningkatkan, boom, semuanya berfungsi.
Terima kasih atas bantuannya, senang masalah ini ditutup.

Wah, tunggu. Anda perlu meningkatkan ke Blaze agar penerapan Anda berfungsi? Apa ini karena Anda belum membuat Situs Hosting baru dan perlu meningkatkan versi untuk melakukannya? Atau apakah Anda sebelumnya meningkatkan versi ke Blaze, membuat Situs Hosting kedua, menurunkan paket penagihan, dan kemudian mencoba menerapkan?

Juga apakah Anda kebetulan mengetahui permintaan mana yang menyebabkan kesalahan itu? Karena Anda benar, kesalahan itu tidak membantu sama sekali dan saya ingin melacak dari mana asalnya sehingga saya dapat memberikan beberapa panduan tentang apa yang harus dilakukan daripada beberapa teks 404 generik.

Ya benar, Agak membingungkan, saya cukup yakin saya membuat situs kedua di tingkat gratis, lalu saya mengalami masalah dalam menerapkan dan berpikir mungkin begitu, jadi saya meningkatkannya. Ketika saya menyadari saya perlu mengangkat masalah di github, saya menurunkan versi, ketika saya melakukan ini, hal-hal aneh mulai terjadi di konsol web firebase. Situs web hosting kedua akan muncul, tetapi ketika saya mengkliknya, itu akan menampilkan layar kosong.
Setelah saya menerima dukungan Anda, saya kemudian mencoba menerapkan, itu menunjukkan 404 saat penerapan. Jadi saya pikir saya akan meningkatkan kembali ke api, dan seperti sulap itu berhasil.

mengalami masalah yang sama

@isevcik benarkah? Saya cukup yakin bahwa kami telah memperbaiki masalah itu (dan saya seharusnya benar-benar menutupnya). Apakah Anda melakukan hal serupa untuk mengupgrade proyek Anda, lalu menurunkannya?

Anda mungkin harus mengirim email ke bagian dukungan sehingga kami bisa mendapatkan detail proyek Anda dan memperbaikinya. Anda harus memastikan untuk menyebutkan masalah GitHub ini dan saya sehingga mereka tahu kepada siapa harus mengirimkannya.

@isevcik Saya mendapatkan kesalahan yang sama dan berpikir saya memiliki masalah yang sama tetapi ternyata ada kesalahan ketik pada projectid di .firebaserc.
Saya menggunakan perintah ini untuk menambahkan target ini daripada melakukannya secara manual dan berhasil.
Catatan: Anda juga harus menambahkan target ke firebase.json.

firebase target: terapkan jenis nama sumber daya nama target

https://firebase.google.com/docs/cli/t target

Halo, masalah yang sama:

[debug] [2019-08-09T17:34:19.322Z] TypeError: Cannot read property 'deploys' of undefined
    at /Users/kevinliu/.npm-global/lib/node_modules/firebase-tools/lib/deploy/index.js:84:36
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
[error] 
[error] Error: An unexpected error has occurred.

index.js :

   if (deployedHosting) {
            _.each(context.hosting.deploys, function (deploy) {
                logger.info(clc.bold("Hosting URL:"), utils.addSubdomain(api.hostingOrigin, deploy.site));
            });
            const versionNames = context.hosting.deploys.map((deploy) => deploy.version);
            return { hosting: versionNames.length === 1 ? versionNames[0] : versionNames };
        }

@hpoit Saya juga mendapatkan kesalahan itu. Apakah Anda menyelesaikannya? Jika demikian, apa yang Anda ubah?

[debug] [2019-08-16T18:44:01.159Z] TypeError: Cannot read property 'deploys' of undefined
    at C:\Users\Kraken\AppData\Roaming\npm\node_modules\firebase-tools\lib\deploy\index.js:84:36
    at process._tickCallback (internal/process/next_tick.js:68:7)
[error] 
[error] Error: An unexpected error has occurred.

Apakah ini telah diselesaikan untuk siapa pun yang menghubungi dukungan seperti yang disarankan @Memeriaj ? Jika demikian, bisakah detailnya diposting di sini untuk referensi di masa mendatang?

@MaxInertia ya saya menyelesaikannya, saya memformat dan menghapus seluruh mesin saya :-)

Saya pikir itu hanya melempar kesalahan ini ketika tidak dapat menemukan target penerapan di konfigurasi Anda. Saya akan memeriksa konfigurasi Anda di dua file config firebase. Posting isinya di sini jika Anda ingin opini kedua.

Hal yang sama di sini, ketika mencoba menerapkan situs web sekunder dengan firebase 7.3.1

Sebenarnya, ada kesalahan di firebase.json, saya telah menentukan "target" yang salah

Saya dapat menyelesaikan masalah ini dengan membuat target penerapan baru dengan bantuan panduan ini:

https://firebase.google.com/docs/hosting/multisites?authuser=1#set_up_deploy_t target

Saya mengeluarkan satu perintah:

firebase target:apply hosting blog myapp

dan menambahkan kunci target ke firebase.json

{
  "hosting": {
    "target": "myapp",
    ...
  }
  ...
}

edit: Saya masuk ke masalah ini saat menyiapkan hosting pertama saya di proyek firebase baru saya.

Saya bisa menyelesaikannya juga. Masalah saya adalah ketika saya membuat target penerapan menggunakan perintah yang diuraikan dalam dokumen: $ firebase target-name resource-name , saya telah menempatkan proyek utama saya sebagai nama sumber daya. Saya mengubahnya di file .firebaserc dan menjalankan perintah firebase deploy dan berhasil. Contoh di bawah ini:

"targets": {
    "firebase-project-name": {
      "hosting": {
        "admin": [
          "admin-project"
        ]
      }
    }
  }

Hai, saya juga menghadapi masalah yang sama, dengan cara yang sedikit berbeda (untuk domain yang ditambahkan khusus)

Saya dapat menerapkan ke beberapa hosting dengan nama target yang berbeda. tetapi ketika saya mencoba menerapkan ke domain yang ditambahkan khusus saya. Saya mendapatkan Kesalahan: Kesalahan HTTP: 404, Entitas yang diminta tidak ditemukan.

Domain kustom saya adalah 3dprinter.froozen.in (ditambahkan ke firebase di dalam hosting default dengan mengklik tombol tambahkan domain kustom)
Domain kustom saya ditambahkan di dalam domain default proyek saya.
Mohon bantu saya untuk melangkah lebih jauh

Kami membutuhkan log debug yang menunjukkan panggilan gagal yang tepat untuk dapat membantu
mendiagnosis masalahnya.

Pada Sab, 4 Jan 2020, 12:52 nandha [email protected] menulis:

Hai, saya juga menghadapi masalah yang sama, sedikit dengan cara berbeda (untuk custom
domain tambahan)

Saya dapat menerapkan ke beberapa hosting dengan nama target yang berbeda. tapi
ketika saya mencoba menerapkan ke domain yang ditambahkan khusus saya. Saya mendapatkan Error: HTTPKesalahan: 404, Entitas yang diminta tidak ditemukan.

Domain kustom saya adalah 3dprinter.froozen.in (ditambahkan ke firebase inside
hosting default dengan mengklik tombol tambahkan domain kustom)
Domain kustom saya ditambahkan di dalam domain default proyek saya.
Mohon bantu saya untuk melangkah lebih jauh

-
Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/firebase/firebase-tools/issues/1232?email_source=notifications&email_token=AAAAH7SNCPUEIMIWCDHK6CDQ4BE4JA5CNFSM4HJWK5J2YY3PNVWWK3TUL52HS4DFVREXHZG43VMVBWW2HS4DFVREXG43VYLOMVBW2YY3PNVWWK3TUL52HS4DFVREXG43VYLOMVB482YY3
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/AAAAH7V26G3YF6Q7FYDP5QTQ4BE4JANCNFSM4HJWK5JQ
.

Hai @blackmadeh ,

Saya menyelesaikan masalah saya

  1. Domain tidak sepenuhnya ditautkan
  2. Firebase.json dari hosting telah diubah sesuai dokumentasi
    Ketika keduanya selesai, itu bekerja dengan baik seperti yang diharapkan

Jika tidak ada pertanyaan lagi, kami dapat menutup masalah ini
Jika ada pertanyaan, silakan beri komentar di bawah ini

Masalah saya dengan "Kesalahan: Kesalahan HTTP: 404, Entitas yang diminta tidak ditemukan" yang saya coba gunakan

``
"target": {
"Nama Proyek": {
"hosting": {
"dev": [
"dev.site.com"
],
"prod": [
"site.com"
]
}
}
}


istead of

 ```
"targets": {
    "projectname": {
      "hosting": {
        "dev": [
          "dev-site-name"
        ],
        "prod": [
          "ez-site-name"
        ]
      }
    }
  }

Saya menyelesaikan milik saya dengan memastikan:

  1. .firebaserc harus memiliki targets.<PROJECT_ID>.hosting.<TARGET_NAME> = [ "<HOST_ID" ]
{
  "projects": {
    "default": "my-project-id"
  },
  "targets": {
    "my-project-id": {
      "hosting": {
        "my-blog": [
          "my-blog-host-id"
        ]
      }
    }
  }
}

Bagian targets dapat dibuat menggunakan perintah firebase target:apply hosting my-blog my-blog-host-id

  1. firebase.json harus memiliki hosting sebagai array, dan itemnya harus memiliki target: <TARGET_NAME>
{
  "hosting": [{
    "target": "my-blog",
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }]
}

Bagian yang penting adalah membuat hosting array, dan menambahkan target ke itemnya.

Saya terkena hal ini hari ini juga, mengubah firebase.json hosting menjadi array benar-benar menyakitkan!

Sekarang saya perlu menduplikasi setiap entri (meskipun sama kecuali target), yang memiliki banyak konfigurasi tajuk untuk semua lingkungan, tiba-tiba itu adalah konfigurasi 4x json yang perlu saya kelola.

Ingin menggunakan kembali hosting default dari firebase json?

Beberapa situs dalam proyek yang sama tidak dimaksudkan untuk digunakan sebagai "lingkungan" - jika Anda memiliki situs "pementasan", "dev", dll., Situs tersebut seharusnya merupakan situs dalam proyek yang berbeda dan perintah firebase use dapat membantu Anda beralih di antara / menerapkannya secara mandiri.

Jika bukan itu yang Anda lakukan, dapatkah Anda membantu saya memahami mengapa konfigurasi firebase.json untuk setiap situs dalam proyek Anda identik?

Kesimpulannya, saat ini kami memiliki 4 env yang berbeda di project GCP yang berbeda, namun kami perlu menerapkan env sementara (yang mencakup bagian lain, bukan hanya firebase hosting), terasa jauh lebih mudah untuk menggunakan kembali yang ada. Project GCP selama satu atau dua bulan, daripada menambahkan yang baru.

Satu-satunya cara untuk mencapai atm ini adalah dengan menggandakan konfigurasi hosting firebase.json sebanyak 5 kali dan menambahkan target unik ke setiap konfigurasi.

Saya kira dari mana kebingungan itu berasal, adalah jika Anda memiliki konfigurasi hosting default, harapannya akan berfungsi dengan target atau proyek apa pun, tapi saya rasa itu adalah kesalahpahaman saya tentang bagaimana itu digunakan oleh proyek yang berbeda, dibandingkan dengan proyek + target.

Jelas masih bisa membuatnya bekerja, hanya butuh beberapa saat memahami mengapa kesalahan ini muncul.
2020-06-22T17:20:39.837Z] TypeError: Cannot read property 'deploys' of undefined

Pesan kesalahannya jelas buruk, dan FWIW kami memiliki solusi yang lebih baik untuk "pratinjau singkat" yang sedang dikembangkan sekarang 😄

Hanya untuk menambahkan ke "perbaikan larik", kami memiliki dua situs yang diterapkan, saya dapat menargetkan situs yang benar setelah mengubah target menjadi larik:

{ "hosting": [ { "target": "web", "public": "public", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ { "source": "**", "destination": "/index.html" } ] }, { "target": "admin", "public": "build", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], "rewrites": [ { "source": "**", "destination": "/index.html" } ] } ] }

Tapi kemudian "admin" mengembalikan halaman kosong, karena kita menggunakan React, triknya adalah membuat titik Publik ke Build.
"public": "build",

Saya mengalami masalah ini, dan semuanya benar menurut di atas dan dokumen. Namun saya masih mendapatkan kesalahan. Tidak peduli target mana yang saya gunakan, tampaknya tidak menghormati itu, meskipun semua file dan pengaturan dilaporkan sebagai benar. Apakah ada hal lain yang tidak dibahas di atas?

  1. lari: firebase target:apply hosting second-project-id second-project-id

  2. kemudian buka file .firebaserc dan pastikan terlihat seperti berikut
    `{
    "target": {

    "main-project-id": {
    "hosting": {
    "second-project-id": [
    "id-proyek-kedua"
    ]
    }
    }
    }
    } `

  3. lalu buka file firebase.json dan pastikan file berikut ini
    "target": "second-project-id",

Hmm, saya tidak tahu persis apa yang saya lakukan untuk membuatnya berhasil, tetapi saat ini berfungsi dengan .firebaserc :

{
  "projects": {
    "default": "mainProjectId"
  },
  "targets": {
    "mainProjectId": {
      "hosting": {
        "production": [
          "mainProjectId"
        ],
        "staging": [
          "secondProjectId"
        ]
      }
    }
  }
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat