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 required 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>