Runtime Node.js

Fungsi Cloud Run Anda berjalan di lingkungan yang terdiri dari versi sistem operasi dengan paket add-on, dukungan bahasa, dan library Functions Framework Node.js yang mendukung dan memanggil fungsi Anda. Lingkungan ini diidentifikasi berdasarkan versi bahasa, dan dikenal sebagai ID runtime.

Persiapan fungsi

Anda dapat menyiapkan fungsi langsung dari Google Cloud konsol atau menulisnya di komputer lokal, lalu menguploadnya. Untuk menyiapkan komputer lokal Anda untuk pengembangan Node.js, lihat Menyiapkan lingkungan pengembangan Node.js.

Runtime dan image dasar Node.js yang didukung

Runtime ID Runtime Stack Image dasar runtime Penghentian penggunaan Penghapusan
Node.js 24 nodejs24
  • google-24 (default)
  • google-24-full
  • google-24/nodejs24
  • google-24-full/nodejs24
  • 30-04-2028 31-10-2028
    Node.js 22 nodejs22
  • google-22 (default)
  • google-22-full
  • google-22/nodejs22
  • google-22-full/nodejs22
  • 30-04-2027 31-10-2027
    Node.js 20 nodejs20
  • google-22 (default)
  • google-22-full
  • google-22/nodejs20
  • google-22-full/nodejs20
  • 2026-04-30 30-10-2026
    Node.js 18 nodejs18
  • google-22 (default)
  • google-22-full
  • google-22/nodejs18
  • google-22-full/nodejs18
  • 2025-04-30 30-10-2025
    Node.js 16 nodejs16 google-18-full google-18-full/nodejs16 30-01-2024 30-01-2025
    Node.js 14 nodejs14 google-18-full google-18-full/nodejs14 30-01-2024 30-01-2025
    Node.js 12 nodejs12 google-18-full google-18-full/nodejs12 30-01-2024 30-01-2025
    Node.js 10 nodejs10 google-18-full google-18-full/nodejs10 30-01-2024 30-01-2025
    Node.js 8 nodejs8 Dihapus Dihapus 2020-06-05 Feb 2021
    Node.js 6 nodejs6 Dihapus Dihapus 2019-04-17 Agu 2020

    Memilih runtime Anda

    Anda dapat memilih salah satu runtime Node.js yang didukung untuk fungsi Anda selama deployment.

    Anda dapat memilih versi runtime menggunakan Google Cloud konsol atau gcloud CLI. Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda:

    gcloud

    Tentukan image dasar Node.js untuk fungsi Anda menggunakan flag --base-image, saat men-deploy fungsi Anda. Contoh:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image nodejs24
    

    Ganti:

    • FUNCTION dengan nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.

    • FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.

    Untuk mengetahui petunjuk mendetail tentang cara men-deploy fungsi menggunakan gcloud CLI, lihat Men-deploy fungsi di Cloud Run.

    Konsol

    Anda dapat memilih versi runtime saat membuat atau memperbarui fungsi Cloud Run di Google Cloud konsol. Untuk mengetahui petunjuk mendetail tentang cara men-deploy fungsi, lihat Men-deploy fungsi di Cloud Run.

    Untuk memilih runtime di Google Cloud konsol saat membuat fungsi, ikuti langkah-langkah berikut:

    1. Di Google Cloud konsol, buka halaman Cloud Run:

      Buka Cloud Run

    2. Klik Write a function.

    3. Dalam daftar Runtime, pilih versi runtime Node.js.

    4. Klik Create, lalu tunggu Cloud Run membuat layanan menggunakan revisi placeholder.

    5. Konsol akan mengalihkan Anda ke tab Source tempat Anda dapat melihat kode sumber fungsi Anda. Klik Save and redeploy.

    Untuk mengetahui petunjuk mendetail tentang cara memperbarui versi runtime setelah fungsi Anda di deploy, lihat Men-deploy ulang kode sumber baru.

    Struktur kode sumber

    Agar Cloud Run Functions dapat menemukan definisi fungsi Anda, kode sumber harus mengikuti struktur tertentu. Lihat Menulis fungsi Cloud Run untuk mengetahui informasi selengkapnya.

    Menentukan dependensi

    Anda dapat menentukan dependensi fungsi dengan mencantumkannya dalam file package.json. Untuk mengetahui informasi selengkapnya, lihat Menentukan dependensi di Node.js.

    Skrip build NPM

    Secara default, runtime Node.js akan mengeksekusi npm run build jika skrip build terdeteksi di package.json. Jika memerlukan kontrol tambahan pada langkah-langkah build sebelum memulai aplikasi, Anda dapat memberikan langkah build kustom dengan menambahkan skrip gcp-build ke file package.json.

    Anda dapat mencegah build agar tidak menjalankan skrip npm run build dengan:

    • Menambahkan skrip gcp-build dengan nilai kosong di file package.json Anda: "gcp-build":"".

    • Menetapkan variabel lingkungan build GOOGLE_NODE_RUN_SCRIPTS ke string kosong untuk mencegah semua skrip berjalan.

    Penyelesaian fungsi asinkron

    Saat menangani tugas asinkron yang melibatkan callback atau objek Promise, Anda harus secara eksplisit memberi tahu runtime bahwa fungsi Anda telah selesai mengeksekusi tugas ini. Anda dapat melakukannya dengan beberapa cara, seperti yang ditunjukkan dalam contoh berikut. Kuncinya adalah kode Anda harus menunggu tugas asinkron atau Promise selesai sebelum ditampilkan; jika tidak, komponen asinkron fungsi Anda mungkin dihentikan sebelum selesai.

    Fungsi berbasis peristiwa

    Tampilan implisit

      exports.implicitlyReturning = async (event, context) => {
        return await asyncFunctionThatReturnsAPromise();
      };
    

    Tampilan eksplisit

      exports.explicitlyReturning = function (event, context) {
        return asyncFunctionThatReturnsAPromise();
      };
    

    Fungsi HTTP

    // OK: await-ing a Promise before sending an HTTP response
    await Promise.resolve();
    
    // WRONG: HTTP functions should send an
    // HTTP response instead of returning.
    return Promise.resolve();
    
    // HTTP functions should signal termination by returning an HTTP response.
    // This should not be done until all background tasks are complete.
    res.send(200);
    res.end();
    
    // WRONG: this may not execute since an
    // HTTP response has already been sent.
    return Promise.resolve();

    Menggunakan middleware untuk menangani permintaan HTTP

    Fungsi HTTP Node.js menyediakan request dan response objek yang kompatibel dengan ExpressJS untuk menyederhanakan pemakaian permintaan HTTP. Cloud Run Functions otomatis membaca isi permintaan sehingga Anda akan selalu menerima isi permintaan, apa pun jenis medianya. Artinya, permintaan HTTP harus dianggap telah dibaca sepenuhnya pada saat kode Anda dieksekusi. Penyusunan bertingkat aplikasi ExpressJS harus digunakan dengan peringatan ini—khususnya, middleware yang memperkirakan isi permintaan belum dibaca mungkin tidak berperilaku seperti yang diharapkan.

    Menggunakan Modul ES

    Modul ECMAScript (modul ES atau ESM) adalah fitur standar TC39 yang tidak ditandai di Node versi 14+ untuk memuat modul JavaScript. Tidak seperti CommonJS, ESM menyediakan API asinkron untuk memuat modul. Cara ini juga memberikan peningkatan sintaksis populer melalui pernyataan import dan export yang dapat digunakan dalam fungsi Cloud Run (bukan pernyataan require).

    Untuk menggunakan ESM dalam fungsi Cloud Run, Anda harus mendeklarasikan "type": "module" dalam package.json Anda.

    {
      ...
      "type": "module",
      ...
    }
    

    Selanjutnya, Anda dapat menggunakan pernyataan import dan export.

    Pelajari lebih lanjut cara menggunakan modul ES.