Runtime Node.js
Cloud Function Anda berjalan di lingkungan yang terdiri dari versi sistem operasi plus paket add-on, dukungan bahasa, dan library Functions Framework yang mendukung dan memanggil fungsi Anda. Lingkungan ini diidentifikasi berdasarkan versi bahasa, dan dikenal sebagai runtime.
Untuk mengetahui informasi tentang runtime secara umum dan mempelajari versi Ubuntu yang digunakan oleh setiap runtime Node.js, lihat lingkungan eksekusi Cloud Functions.
Untuk mulai membangun dan men-deploy Cloud Functions dengan Node.js, baca Panduan Memulai.
Untuk mem-build dan menguji fungsi di sistem lokal, baca artikel Menjalankan Fungsi dengan Framework Functions.
Pilih runtime
Cloud Functions mendukung beberapa versi Node.js, yang tercantum di halaman Dukungan runtime. Anda dapat memilih runtime Node.js yang diinginkan untuk fungsi Anda selama deployment:
Lihat Men-deploy Cloud Function untuk mengetahui detail tentang cara men-deploy dari Google Cloud CLI.
Lihat panduan memulai di konsol Google Cloud untuk mengetahui detail tentang cara melakukan deployment dari Konsol Google Cloud.
Lingkungan eksekusi
Lingkungan eksekusi mencakup runtime, sistem operasi, paket, dan library yang memanggil fungsi Anda.
Node.js 18 dan versi yang lebih baru menggunakan lingkungan eksekusi berdasarkan Ubuntu 22.04. Versi yang lebih lama dari Node.js 18 didasarkan pada Ubuntu 18.04. Lihat Lingkungan eksekusi Cloud Functions untuk mengetahui informasi selengkapnya.
Library yang memanggil fungsi Anda adalah Framework Fungsi Node.js.
Struktur kode sumber
Agar Cloud Functions dapat menemukan definisi fungsi Anda, setiap runtime memiliki persyaratan penyusunan struktur tertentu untuk kode sumber Anda. Baca artikel Menulis Cloud Functions untuk mengetahui informasi selengkapnya.
Menentukan dependensi
Anda dapat menentukan dependensi fungsi dengan mencantumkannya dalam
file package.json
. Untuk informasi lebih lanjut, 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 ditunjukkan pada
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
Node.js
Menggunakan middleware untuk menangani permintaan HTTP
Cloud Functions HTTP Node.js menyediakan objek request
dan response
yang kompatibel dengan ExpressJS untuk mempermudah pemakaian permintaan HTTP. Cloud Functions secara 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. Penyarangan 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. Ini juga memberikan peningkatan sintaksis yang populer dengan pernyataan import
dan export
yang dapat digunakan dalam Cloud Function (bukan pernyataan require
).
Untuk menggunakan ESM dalam Cloud Function, Anda harus mendeklarasikan "type": "module"
dalam
package.json
Anda.
{
...
"type": "module",
...
}
Selanjutnya, Anda dapat menggunakan pernyataan import
dan export
.