Buka konsol

Menangani dependensi

Fungsi diizinkan untuk menggunakan modul Node.js eksternal serta data lokal. Dependensi pada Node.js dikelola dengan npm dan dinyatakan dalam file metadata bernama package.json.

Untuk menentukan dependensi bagi fungsi Anda, tambahkan ke file package.json. Jika melakukan penerapan melalui fitur command-line gcloud, Anda juga dapat menginstal dependensi terlebih dahulu dan menerapkannya bersama fungsi Anda. Secara default, folder node_modules ditambahkan ke file .gcloudignore Anda dan tidak diupload sebagai bagian dari penerapan Anda. Untuk menerapkan dependensi yang sudah diinstal sebelumnya, hapus node_modules/ dari file .gcloudignore sebelum menerapkan fungsi.

Dalam contoh ini, dependensi tercantum dalam file package.json:

{
  "dependencies": {
    "uuid": "^3.0.1"
  }
}

Kemudian, dependensi tersebut akan diimpor dalam fungsi:

JavaScript

const uuid = require('uuid');

// Return a newly generated UUID in the HTTP response.
exports.getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
});

TypeScript

import * as uuid from 'uuid';

// Return a newly generated UUID in the HTTP response.
export let getUuid = functions.https.onRequest((req, res) => {
  res.send(uuid.v4());
}

Menggunakan npm untuk menginstal modul Node.js

Cara termudah untuk menginstal modul Node.js adalah dengan menggunakan perintah npm install di folder yang berisi Cloud Function Anda. Misalnya, perintah berikut akan menambahkan modul uuid:

npm install uuid

Perintah ini menggabungkan dua langkah:

  1. Menandai versi terbaru dari modul sebagai dependensi pada file package.json Anda. Langkah ini sangat penting: Cloud Functions hanya menginstal modul yang dinyatakan dalam file package.json Anda.
  2. Mendownload modul ke direktori node_modules. Dengan langkah ini, Anda dapat menggunakan modul tersebut saat melakukan pengembangan secara lokal.

Jika belum menginstal npm di mesin Anda, dapatkan npm.

Langkah tambahan untuk TypeScript

TypeScript sangat membantu saat Anda menggunakan library yang memiliki informasi jenis. Dengan begitu, TypeScript dapat mendeteksi error sintaks dan editor dapat memberikan saran pelengkapan otomatis yang lebih baik kepada Anda. Beberapa library, seperti firebase-admin dan firebase-functions, dilengkapi dengan definisi TypeScript.

Banyak library yang tidak menyediakan definisi TypeScript-nya sendiri. Project DefinitelyTyped memberikan definisi yang dikelola komunitas untuk library node yang paling populer. DefinitelyTyped memublikasikan definisi ini dengan nama paket NPM yang sama, tetapi berada dalam organisasi "@types". Misalnya, Anda dapat menginstal informasi jenis untuk library uuid dengan perintah berikut ini:

npm install @types/uuid

Jika sudah terbiasa menggunakan TypeScript, Anda dapat menggabungkan kedua penginstalan:

npm install uuid @types/uuid

Dependensi jenis harus sama dengan dependensi library. Misalnya, Anda tidak boleh menyimpan uuid sebagai dependensi normal dan @types/uuid sebagai dependensi dev atau dependensi peer.

Memuat modul Node.js

Gunakan fungsi require() Node.js untuk memuat modul Node.js yang telah diinstal. Anda juga dapat menggunakan fungsi require() untuk mengimpor file lokal yang diterapkan bersama fungsi Anda.

Jika Anda menulis fungsi di TypeScript, gunakan pernyataan import dengan cara yang sama untuk memuat modul Node.js yang telah diinstal.

Menggunakan modul pribadi

Agar dapat menggunakan modul npm pribadi, Anda harus memasukkan kredensial (token autentikasi) untuk registry npm dalam file .npmrc yang berada di direktori fungsi. Dokumentasi npm menjelaskan cara membuat token akses baca saja kustom. Kami tidak menyarankan penggunaan file .npmrc yang dibuat di direktori beranda karena berisi token baca-tulis. Izin tulis tidak diperlukan selama penerapan, dan dapat menimbulkan risiko keamanan.

Jangan sertakan file .npmrc jika Anda tidak menggunakan repositori pribadi, karena dapat memperlama waktu penerapan fungsi Anda.