ข้ามไปเนื้อหาหลัก

สำรวจไฟล์ .env.example: ช่องว่างระหว่างตัวแปร 19 ตัวและการใช้งานจริง

เจาะลึกการตรวจสอบไฟล์ .env.example ของโปรเจกต์ PubTrivia ที่มีตัวแปร 19 ตัว แต่โค้ดอ่านจริง 15 ตัว พร้อมปัญหาคอมเมนต์และโค้ดเก่าตกค้าง

เรียบเรียงโดย AI
Inewgen
31 Oct 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
สำรวจไฟล์ .env.example: ช่องว่างระหว่างตัวแปร 19 ตัวและการใช้งานจริง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ไฟล์ .env.example ของ PubTrivia มีตัวแปรเอกสาร 19 ตัว แต่โค้ดอ่านจริง 15 ตัว
  • พบตัวแปรส่วนเกินและตัวแปรที่ไม่ได้ประกาศในไฟล์แต่เฟรมเวิร์กจัดการให้
  • คอมเมนต์ความยาว 20บรรทัดของ MANAGED_PAYMENTS_ENABLED อธิบายระบบที่ถูกลบไปแล้ว
  • โค้ดสคริปต์ Stripe และตัวแปร OAuth ถูกใช้งานเป็นแฟล็กเปิดปิดฟีเจอร์แทนการรับค่าจริง

ไฟล์ .env.example มักเป็นเอกสารชิ้นแรกที่ผู้ร่วมพัฒนาคนใหม่เปิดอ่านและเป็นชิ้นสุดท้ายที่มีคนอัปเดต โดยในโปรเจกต์ PubTrivia มีไฟล์ลักษณะนี้สองชุด ชุดหนึ่งสำหรับแอปพลิเคชัน Next.js ที่รองรับเว็บไซต์และแดชบอร์ด และอีกชุดสำหรับเซิร์ฟเวอร์ WebSocket ที่ดูแลระบบควิซภาคสนาม นักพัฒนาจึงได้ตรวจสอบตัวแปรทั้งหมดเทียบกับการเรียกใช้ process.env ในคลังโค้ด

จากการตรวจสอบไฟล์ราก (root file) พบว่ามีการบันทึกตัวแปรไว้ 19 ตัว แต่มีเพียง 15 ตัวเท่านั้นที่ซอร์สโค้ดของแอปเรียกใช้งาน โดยมีช่องว่างของตัวแปรที่แตกต่างกันออกไปในแต่ละกรณี ซึ่งส่วนใหญ่มีความเข้าใจรองรับ ยกเว้นบางจุดที่เป็นความผิดพลาดตกค้างจากการพัฒนาเวอร์ชันก่อนหน้า

19ตัวแปรใน .env.example
15ตัวแปรที่โค้ดอ่านจริง
4ตัวแปรส่วนต่าง

ตัวแปร GOOGLE_OAUTH_CLIENT_SECRET ไม่เคยถูกโค้ดอ่านเพราะระบบใช้ Supabase เป็นผู้จัดการแลกเปลี่ยนโทเค็น แต่ยังคงใส่ไว้ในไฟล์ตัวอย่างเพื่อให้ผู้ตั้งค่าโปรเจกต์ทราบว่าต้องเตรียมข้อมูลนี้ เช่นเดียวกับ SENTRY_AUTH_TOKEN ที่ถูกอ่านโดยปลั๊กอิน webpack ของ Sentry ระหว่างกระบวนการ build ไม่ใช่โดยโค้ดโดยตรง ส่วน NEXTJS_INTERNAL_URL มีการเขียนโน้ตกำกับด้วยตัวพิมพ์ใหญ่ชัดเจนว่าเป็นตัวแปรที่เซิร์ฟเวอร์ WebSocket อ่าน

developer programming workspace monitor close up

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ในทางกลับกัน NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY คือความผิดพลาดที่แท้จริง เนื่องจากเป็นโค้ดตกค้างจากระบบตารางราคาเดิมที่ถูกถอดออกไปแล้ว แต่แท็กสคริปต์ของ Stripe ยังคงถูกโหลดอยู่ในหน้า layout ทุกหน้า ทำให้ไฟล์ตัวอย่างนี้กลายเป็นหลักฐานชิ้นที่สองที่ช่วยยื้อดีไซน์เก่าที่ถูกลบไปแล้วให้ยังคงอยู่ นอกจากนี้ยังมีตัวแปรอย่าง NEXT_RUNTIME และ NODE_ENV ที่เฟรมเวิร์กจัดเตรียมให้เอง ซึ่งไม่ควรใส่ไว้ในไฟล์ตัวอย่างเพราะอาจทำให้มีคนเข้าใจผิดและเข้าไปตั้งค่าด้วยตนเอง

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

การจัดการไฟล์ตั้งค่าตัวแปรแวดล้อม (.env) มักเป็นจุดที่ละเลยได้ง่ายในโปรเจกต์ขนาดใหญ่ การที่ไฟล์ตัวอย่างระบุตัวแปรเกินจริงหรือมีคอมเมนต์ที่ล้าสมัยไม่เพียงแต่สร้างความสับสนให้ผู้พัฒนาหน้าใหม่ แต่ยังอาจนำไปสู่การตั้งค่าระบบความปลอดภัยที่คลาดเคลื่อน การทำความสะอาดโค้ดและไฟล์ตั้งค่าอย่างสม่ำเสมอจึงมีความสำคัญอย่างยิ่งต่อความสมบูรณ์ของซอฟต์แวร์

ปัญหาที่น่ากังวลที่สุดคือคอมเมนต์ความยาว 20 บรรทัดของตัวแปร MANAGED_PAYMENTS_ENABLED ซึ่งเป็นคอมเมนต์ที่ยาวที่สุดในไฟล์ แต่หนึ่งในสามส่วนท้ายกลับอธิบายดีไซน์ระบบจัดการราคาและรหัสสินค้า (Products และ Prices) ที่ถูกลบทิ้งไปแล้ว ทำให้ผู้พัฒนาที่ทำตามเอกสารนี้ต้องเสียเวลาค้นหาแดชบอร์ด Stripe โดยเปล่าประโยชน์

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้