获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Xử lý sự phụ thuộc

Một chức năng đượ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ộ. Các phần phụ thuộc trong Node.js được quản lý bằng npm và được thể hiện trong tệp siêu dữ liệu có tên package.json . Thời gian chạy Node.js của Cloud Function thường hỗ trợ cài đặt bằng cách sử dụng npm hoặc yarn .

Để chỉ định một phụ thuộc cho chức năng 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"
  }
}

Sự phụ thuộc sau đó đượ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')}!`);
});

bản đánh máy

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 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 file: prefix . 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 phải được lưu trữ ở đâu đó ngoài thư mục node_modules trong thư mục gốc của chức năng 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ề loại. Đ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 DefiniteTyped 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. DefiniteTyped 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 như 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ách cài đặt:

npm install uuid @types/uuid

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

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

Sử dụng hàm request require() của Node.js để tải bất kỳ mô-đun Node.js nào 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 bạn đã cài đặt.

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

Bạn có thể sử dụng mô-đun npm riêng 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ừ Artifact Registry

Kho lưu trữ gói Node.js của Artifact Registry có thể lưu trữ các mô-đun riêng cho chức năng của bạn. Khi triển khai lên Cloud Function, quy trình xây dựng sẽ tự động tạo thông tin đăng nhập Artifact Registry cho tài khoản dịch vụ Cloud Build . Bạn chỉ cần liệt kê kho lưu trữ Artifact Registry trong .npmrc của mình mà không cần tạo thêm thông tin xác thực. 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ư 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ì tệp chứa mã thông báo đọc-ghi. Quyền ghi không bắt buộc trong quá trình triển khai và có thể gây 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 lưu trữ 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 đó phải 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>