Xử lý sự phụ thuộc

Một hàm được phép sử dụng các mô-đun Node.js bên ngoài cũng như dữ liệu cục bộ. Sự phụ thuộc trong Node.js được quản lý bằng npm và được thể hiện trong một tệp siêu dữ liệu có tên là package.json . Thời gian chạy của Cloud Functions Node.js thường hỗ trợ cài đặt bằng npm hoặc sợi .

Để chỉ định một phần phụ thuộc cho hàm của bạn, hãy thêm nó vào tệp package.json của bạn.

Trong ví dụ này, một phần phụ thuộc được liệt kê trong tệp package.json :

{
  "dependencies": {
    "escape-html": "^1.0.3"
  }
}

Sau đó, phần phụ thuộc được nhập vào hàm:

JavaScript

const escapeHtml = require('escape-html');

// Return a greeting with the input HTML-escaped.
exports.hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});

TypeScript

import * as escapeHtml from 'escape-html';

// Return a greeting with the input HTML-escaped.
export let hello = functions.https.onRequest((req, res) => {
  res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
}

Bao gồm các mô-đun Node.js cục bộ

Bạn cũng có thể bao gồm các mô-đun Node.js cục bộ như một phần của chức năng của mình. Bạn có thể đạt được điều này bằng cách khai báo mô-đun của mình trong package.json bằng cách sử dụng tiền tố file: Trong ví dụ sau, mymodule đề cập đến tên mô-đun của bạn và mymoduledir là thư mục chứa mô-đun của bạn:

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

Mã cho mô-đun cục bộ này nên được lưu trữ ở đâu đó ngoài thư mục node_modules trong thư mục gốc của hàm của bạn.

Các bước bổ sung cho TypeScript

TypeScript giúp bạn nhiều nhất khi bạn sử dụng các thư viện có thông tin về kiểu. Điều này cho phép TypeScript bắt lỗi cú pháp và cho phép người chỉnh sửa cung cấp cho bạn các đề xuất tự động hoàn thành tốt hơn. Một số thư viện, như firebase-adminfirebase-functions , đi kèm với các định nghĩa TypeScript.

Nhiều thư viện không cung cấp định nghĩa TypeScript của riêng họ. Dự án chắc chắnTyped cung cấp các định nghĩa do cộng đồng duy trì cho các thư viện nút phổ biến nhất. Chắc chắnTyped xuất bản các định nghĩa này dưới cùng một tên gói NPM, nhưng bên trong tổ chức "@types". Ví dụ: bạn có thể cài đặt thông tin loại cho thư viện uuid với thông tin sau:

npm install @types/uuid

Khi bạn trở nên quen thuộc hơn với TypeScript, bạn có thể thấy mình kết hợp cả hai cài đặt:

npm install uuid @types/uuid

Kiểu phụ thuộc phải cùng loại với kiểu phụ thuộc thư viện. Ví dụ: bạn không nên lưu uuid dưới dạng phụ thuộc thông thường và @types/uuid dưới dạng phụ thuộc dev hoặc phụ thuộc ngang hàng.

Đang tải các mô-đun Node.js

Sử dụng hàm Node.js request require() để tải bất kỳ mô-đun Node.js nào mà bạn đã cài đặt. Bạn cũng có thể sử dụng hàm require() để nhập các tệp cục bộ mà bạn triển khai cùng với hàm của mình.

Nếu bạn đang viết các hàm trong TypeScript, hãy sử dụng câu lệnh import theo cách tương tự để tải bất kỳ mô-đun Node.js nào mà bạn đã cài đặt.

Sử dụng các mô-đun riêng tư

Bạn có thể sử dụng mô-đun npm riêng tư bằng cách cung cấp cài đặt để xác thực với sổ đăng ký trong tệp .npmrc trong thư mục của hàm.

Các mô-đun riêng tư từ Cơ quan đăng ký cấu phần

Kho lưu trữ gói Artifact Registry Node.js có thể lưu trữ các mô-đun riêng cho chức năng của bạn. Khi triển khai cho Chức năng đám mây, quá trình xây dựng sẽ tự động tạo thông tin đăng ký Tạo phần mềm cho tài khoản dịch vụ Bản dựng đám mây . Bạn chỉ cần liệt kê kho lưu trữ Đăng ký Tạo tác trong .npmrc của mình mà không cần tạo thêm thông tin đăng nhập. Ví dụ:

@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true

Các mô-đun riêng từ các kho lưu trữ khác

Tài liệu npm giải thích cách tạo mã thông báo truy cập chỉ đọc tùy chỉnh. Chúng tôi không khuyến khích sử dụng tệp .npmrc được tạo trong thư mục chính vì nó chứa mã thông báo đọc-ghi. Quyền ghi không được yêu cầu trong quá trình triển khai và có thể gây ra rủi ro bảo mật.

Không bao gồm tệp .npmrc nếu bạn không sử dụng kho riêng vì nó có thể làm tăng thời gian triển khai cho các chức năng của bạn.

Định dạng tệp

Nếu bạn đang sử dụng tệp .npmrc để đặt mã thông báo xác thực tùy chỉnh, thì tệp đó sẽ bao gồm dòng hiển thị bên dưới. Thay thế <YOUR_AUTH_TOKEN> bằng mã thông báo xác thực do NPM cung cấp.

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>