package.json
โดยทั่วไปรันไทม์ของ Cloud Functions Node.js รองรับการติดตั้งโดยใช้ npm หรือ yarn หากต้องการระบุการพึ่งพาสำหรับฟังก์ชันของคุณ ให้เพิ่มไปยังไฟล์ package.json
ในตัวอย่างนี้ การพึ่งพาจะแสดงอยู่ในไฟล์ package.json
:
{ "dependencies": { "escape-html": "^1.0.3" } }
จากนั้นการพึ่งพาจะถูกนำเข้าในฟังก์ชัน:
จาวาสคริปต์
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')}!`);
}
รวมถึงโมดูล Node.js ในเครื่อง
คุณยังสามารถรวมโมดูล Node.js ในเครื่องเป็นส่วนหนึ่งของฟังก์ชันของคุณได้ คุณสามารถทำได้โดยการประกาศโมดูลของคุณใน package.json
โดยใช้ file:
คำนำหน้า ในตัวอย่างต่อไปนี้ mymodule
อ้างถึงชื่อโมดูลของคุณและ mymoduledir
คือไดเร็กทอรีที่มีโมดูลของคุณ:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
โค้ดสำหรับโลคัลโมดูลนี้ควรเก็บไว้ที่อื่นที่ไม่ใช่โฟลเดอร์ node_modules
ภายในไดเร็กทอรีรากของฟังก์ชันของคุณ
ขั้นตอนเพิ่มเติมสำหรับ TypeScript
TypeScript ช่วยคุณได้มากที่สุดเมื่อคุณใช้ไลบรารีที่มีข้อมูลประเภท ซึ่งช่วยให้ TypeScript ตรวจจับข้อผิดพลาดทางไวยากรณ์และช่วยให้ผู้แก้ไขให้คำแนะนำการเติมข้อความอัตโนมัติได้ดียิ่งขึ้น ไลบรารีบางตัว เช่น firebase-admin
และ firebase-functions
มาพร้อมกับข้อกำหนด TypeScript รวมอยู่ด้วย
ไลบรารี่จำนวนมากไม่มีการกำหนด TypeScript ของตนเอง โครงการ AbsoluteTyped ให้คำจำกัดความที่ดูแลโดยชุมชนสำหรับไลบรารีโหนดยอดนิยม AbsoluteTyped เผยแพร่คำจำกัดความเหล่านี้ภายใต้ชื่อแพ็คเกจ NPM เดียวกัน แต่อยู่ในองค์กร "@types" ตัวอย่างเช่น คุณสามารถติดตั้งข้อมูลประเภทสำหรับไลบรารี uuid
ด้วยสิ่งต่อไปนี้:
npm install @types/uuid
เมื่อคุณคุ้นเคยกับ TypeScript มากขึ้น คุณอาจพบว่าตัวเองใช้การติดตั้งทั้งสองแบบร่วมกัน:
npm install uuid @types/uuid
การขึ้นต่อกันของประเภทควรเป็นประเภทเดียวกับการขึ้นต่อกันของไลบรารี ตัวอย่างเช่น คุณไม่ควรบันทึก uuid
เป็นการพึ่งพาปกติและ @types/uuid
เป็นการพึ่งพา dev หรือการพึ่งพาเพียร์
กำลังโหลดโมดูล Node.js
ใช้ฟังก์ชัน Node.js require()
เพื่อโหลดโมดูล Node.js ใดๆ ที่คุณติดตั้งไว้ คุณยังสามารถใช้ฟังก์ชัน require()
เพื่อนำเข้าไฟล์ในเครื่องที่คุณปรับใช้ควบคู่ไปกับฟังก์ชันของคุณ
import
ในวิธีเดียวกันเพื่อโหลดโมดูล Node.js ที่คุณติดตั้งไว้การใช้โมดูลส่วนตัว
คุณสามารถใช้ โมดูล npm ส่วนตัวได้ โดยตั้งค่าสำหรับการตรวจสอบสิทธิ์กับรีจิสทรีในไฟล์ .npmrc
ในไดเร็กทอรีของฟังก์ชัน
โมดูลส่วนตัวจาก Artifact Registry
ที่เก็บแพ็กเกจ Artifact Registry Node.js สามารถโฮสต์โมดูลส่วนตัวสำหรับฟังก์ชันของคุณได้ เมื่อปรับใช้กับ Cloud Functions กระบวนการสร้างจะสร้างข้อมูลรับรอง Artifact Registry โดยอัตโนมัติสำหรับ บัญชีบริการ Cloud Build คุณจะต้องแสดงรายการที่เก็บ Artifact Registry ใน .npmrc
ของคุณโดยไม่ต้องสร้างข้อมูลประจำตัวเพิ่มเติม ตัวอย่างเช่น:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
โมดูลส่วนตัวจากที่เก็บอื่น
เอกสาร npm อธิบายวิธีสร้างโทเค็นการเข้าถึงแบบอ่านอย่างเดียวแบบกำหนดเอง เราไม่แนะนำให้ใช้ไฟล์ .npmrc
ที่สร้างขึ้นในโฮมไดเร็กทอรี เนื่องจากมีโทเค็นแบบอ่าน-เขียน ไม่จำเป็นต้องมีสิทธิ์เขียนในระหว่างการปรับใช้ และอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย
อย่ารวมไฟล์ .npmrc
หากคุณไม่ได้ใช้ที่เก็บส่วนตัว เนื่องจากอาจเพิ่มเวลาปรับใช้สำหรับฟังก์ชันของคุณ
รูปแบบไฟล์
หากคุณใช้ไฟล์ .npmrc
เพื่อตั้งค่าโทเค็นการรับรองความถูกต้องที่กำหนดเอง ควรมีบรรทัดที่แสดงด้านล่าง แทนที่ <YOUR_AUTH_TOKEN>
ด้วยโทเค็นการรับรองความถูกต้องที่ NPM ให้มา
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>