Fungsi Cloud Run Anda berjalan di lingkungan yang terdiri dari versi sistem operasi dengan paket add-on, dukungan bahasa, dan library Node.js Functions Framework 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 Konsol Google Cloud atau menulisnya di komputer lokal, lalu menguploadnya. Untuk menyiapkan mesin 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 |
---|---|---|---|
Node.js 22 | nodejs22 |
|
|
Node.js 20 | nodejs20 |
|
|
Node.js 18 | nodejs18 |
|
|
Node.js 16 | nodejs16 | google-18-full | google-18-full/nodejs16 |
Node.js 14 | nodejs14 | google-18-full | google-18-full/nodejs14 |
Node.js 12 | nodejs12 | google-18-full | google-18-full/nodejs12 |
Node.js 10 | nodejs10 | google-18-full | google-18-full/nodejs10 |
Node.js 8 | nodejs8 | Dinonaktifkan | Dinonaktifkan |
Node.js 6 | nodejs6 | Dinonaktifkan | Dinonaktifkan |
Memilih runtime Anda
Anda dapat memilih salah satu runtime Node.js yang didukung untuk fungsi Anda selama deployment.
Anda dapat memilih versi runtime menggunakan Konsol Google Cloud, 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. Contoh:
gcloud run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image nodejs22
Ganti:
FUNCTION dengan nama fungsi yang Anda deployment. 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 mendapatkan 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 konsol Google Cloud. Untuk petunjuk mendetail tentang cara men-deploy fungsi, lihat Men-deploy fungsi di Cloud Run.
Untuk memilih runtime di konsol Google Cloud saat membuat fungsi, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Cloud Run:
Klik Tulis fungsi.
Dalam daftar Runtime, pilih versi runtime Node.js.
Klik Create, dan tunggu Cloud Run membuat layanan menggunakan revisi placeholder.
Konsol akan mengalihkan Anda ke tab Sumber, tempat Anda dapat melihat kode sumber fungsi. Klik Simpan dan deploy ulang.
Untuk petunjuk mendetail tentang cara mengupdate versi runtime setelah fungsi Anda di-deploy, lihat Men-deploy ulang kode sumber baru.
Struktur kode sumber
Agar fungsi Cloud Run dapat menemukan definisi fungsi Anda, kode sumber harus mengikuti struktur tertentu. Lihat artikel Menulis fungsi Cloud Run untuk mengetahui informasi selengkapnya.
Menentukan dependensi
Anda dapat menentukan dependensi fungsi dengan mencantumkannya dalam
file package.json
. Untuk 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 filepackage.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
Menggunakan middleware untuk menangani permintaan HTTP
Fungsi HTTP Node.js menyediakan objek request
dan response
yang kompatibel dengan ExpressJS
untuk menyederhanakan pemakaian permintaan HTTP. Fungsi Cloud Run
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
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 dengan 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
.
{
...
"type": "module",
...
}
Selanjutnya, Anda dapat menggunakan pernyataan import
dan export
.
Pelajari lebih lanjut cara menggunakan modul ES.