مساعد `Adapter`
توفر الأداة المساعدة للمحول (Adapter Helper) طريقة سلسة للتفاعل مع المنصات المختلفة عبر واجهة موحدة.
Import
import { Hono } from 'hono'
import { env, getRuntimeKey } from 'hono/adapter'
env()
الـ env() تسهل الدالة استرجاع متغيرات البيئة عبر أوقات تشغيل مختلفة، متجاوزةً ارتباطات Cloudflare Workers فقط. القيمة التي يمكن استرجاعها باستخدام env(c) قد يختلف لكل بيئة تشغيل (runtime).
import { env } from 'hono/adapter'
app.get('/env', (c) => {
// NAME is process.env.NAME on Node.js or Bun
// NAME is the value written in `wrangler.toml` on Cloudflare
const { NAME } = env<{ NAME: string }>(c)
return c.text(NAME)
})
بيئات التشغيل المدعومة والمنصات بلا خوادم (Serverless) والخدمات السحابية:
- Cloudflare Workers
wrangler.tomlwrangler.jsonc
- Deno
Deno.env.envملف
- Bun
Bun.envprocess.env
- Node.js
process.env
- Vercel
- AWS Lambda
- Lambda@Edge
متغيرات البيئة على Lambda تكون غير مدعوم بواسطة Lambda@Edge، تحتاج إلى استخدام حدث Lambda@Edge كبديل. - Fastly Compute
على Fastly Compute، يمكنك استخدام ConfigStore لإدارة البيانات المُعرَّفة من قبل المستخدم. - Netlify
على Netlify، يمكنك استخدام سياقات Netlify لإدارة البيانات المعرّفة من المستخدم.
تحديد بيئة التشغيل
يمكنك تحديد بيئة التشغيل للحصول على متغيرات البيئة بتمرير مفتاح بيئة التشغيل كوسيطة ثانية.
app.get('/env', (c) => {
const { NAME } = env<{ NAME: string }>(c, 'workerd')
return c.text(NAME)
})
getRuntimeKey()
الـ getRuntimeKey() تُعيد الدالة معرّف بيئة التشغيل (runtime) الحالية.
app.get('/', (c) => {
if (getRuntimeKey() === 'workerd') {
return c.text('You are on Cloudflare')
} else if (getRuntimeKey() === 'bun') {
return c.text('You are on Bun')
}
...
})
مفاتيح بيئات التشغيل المتاحة
فيما يلي مفاتيح بيئات التشغيل المتاحة؛ قد تكون بيئات التشغيل غير المدرجة مدعومة وتُوسم بأنها other، وبعضها مستوحى من مفاتيح Runtime الخاصة بـ WinterCG:
workerd- Cloudflare Workersdenobunnodeedge-light- دوال Vercel Edgefastly- Fastly Computeother- مفاتيح بيئات تشغيل أخرى غير معروفة