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

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ไฟล์ .env.example ของ PubTrivia มีตัวแปรเอกสาร 19 ตัว แต่โค้ดอ่านจริง 15 ตัว
- พบตัวแปรส่วนเกินและตัวแปรที่ไม่ได้ประกาศในไฟล์แต่เฟรมเวิร์กจัดการให้
- คอมเมนต์ความยาว 20บรรทัดของ MANAGED_PAYMENTS_ENABLED อธิบายระบบที่ถูกลบไปแล้ว
- โค้ดสคริปต์ Stripe และตัวแปร OAuth ถูกใช้งานเป็นแฟล็กเปิดปิดฟีเจอร์แทนการรับค่าจริง
ไฟล์ .env.example มักเป็นเอกสารชิ้นแรกที่ผู้ร่วมพัฒนาคนใหม่เปิดอ่านและเป็นชิ้นสุดท้ายที่มีคนอัปเดต โดยในโปรเจกต์ PubTrivia มีไฟล์ลักษณะนี้สองชุด ชุดหนึ่งสำหรับแอปพลิเคชัน Next.js ที่รองรับเว็บไซต์และแดชบอร์ด และอีกชุดสำหรับเซิร์ฟเวอร์ WebSocket ที่ดูแลระบบควิซภาคสนาม นักพัฒนาจึงได้ตรวจสอบตัวแปรทั้งหมดเทียบกับการเรียกใช้ process.env ในคลังโค้ด
จากการตรวจสอบไฟล์ราก (root file) พบว่ามีการบันทึกตัวแปรไว้ 19 ตัว แต่มีเพียง 15 ตัวเท่านั้นที่ซอร์สโค้ดของแอปเรียกใช้งาน โดยมีช่องว่างของตัวแปรที่แตกต่างกันออกไปในแต่ละกรณี ซึ่งส่วนใหญ่มีความเข้าใจรองรับ ยกเว้นบางจุดที่เป็นความผิดพลาดตกค้างจากการพัฒนาเวอร์ชันก่อนหน้า
ตัวแปร GOOGLE_OAUTH_CLIENT_SECRET ไม่เคยถูกโค้ดอ่านเพราะระบบใช้ Supabase เป็นผู้จัดการแลกเปลี่ยนโทเค็น แต่ยังคงใส่ไว้ในไฟล์ตัวอย่างเพื่อให้ผู้ตั้งค่าโปรเจกต์ทราบว่าต้องเตรียมข้อมูลนี้ เช่นเดียวกับ SENTRY_AUTH_TOKEN ที่ถูกอ่านโดยปลั๊กอิน webpack ของ Sentry ระหว่างกระบวนการ build ไม่ใช่โดยโค้ดโดยตรง ส่วน NEXTJS_INTERNAL_URL มีการเขียนโน้ตกำกับด้วยตัวพิมพ์ใหญ่ชัดเจนว่าเป็นตัวแปรที่เซิร์ฟเวอร์ WebSocket อ่าน

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