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-admin
và firebase-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.
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>