Chrome Debugger ไม่ทำงานกับไฟล์ในเครื่อง

ฉันกำลังพยายามแก้ไขข้อบกพร่อง Javascript บางตัวในเครื่อง แต่ฉันพบปัญหาแปลกๆ ถ้าฉันเปิดไฟล์ในเครื่องเช่น:

<html>
    <head>
        <script src="file.js"></script>
    </head>
    <body></body>
</html>

ด้วย file.js ที่เป็นเพียง:

(function() {
    'use strict';
    debugger
})();

มันล้มเหลวในการหยุดชั่วคราวบนบรรทัดการดีบัก อย่างไรก็ตาม หากฉันเปิดไฟล์เดียวกันนั้นใน Firefox/Firebug ไฟล์นั้นจะหยุดชั่วคราวในบรรทัดนั้น นอกจากนี้ หากฉันเพิ่มบรรทัดดีบักเกอร์ลงในไฟล์ที่ให้บริการบนเซิร์ฟเวอร์ในเครื่องของฉัน (เช่น ไฟล์ http:// แทนที่จะเป็นไฟล์ file://) โปรแกรมดีบักเกอร์ Chrome จะหยุดชั่วคราวตามที่คาดไว้

ปัญหาปรากฏเฉพาะ (เท่าที่ฉันสามารถบอกได้) ใน Chrome พร้อมไฟล์ในเครื่อง อย่างไรก็ตาม ฉันค้นหาข้อมูลใน Google หลายครั้งและไม่พบตัวเลือก "ปิดใช้งานดีบักเกอร์ในไฟล์ในเครื่อง" ใด ๆ สำหรับ Chrome หรืออะไรทำนองนั้น (ซึ่งอาจเปิดใช้งานโดยไม่ได้ตั้งใจ)

มีใครเคยเห็นสิ่งนี้มาก่อนหรือไม่ และหากเป็นเช่นนั้น คุณสามารถแก้ไขได้หรือไม่


person machineghost    schedule 14.02.2013    source แหล่งที่มา


คำตอบ (1)


ปรากฎว่าปัญหาอยู่ที่การตั้งค่าสถานะที่ฉันเพิ่มลงใน Chrome ตามค่าเริ่มต้น Chrome จะไม่อนุญาตให้ไฟล์ในเครื่องของคุณเข้าถึงไฟล์ในเครื่องอื่น ๆ ดังนั้นฉันจึงเปิดใช้งานการโหลดไฟล์ในเครื่องด้วยการตั้งค่าสถานะบรรทัดคำสั่ง:

--allow-file-access-from-files

มันใช้งานได้ดียกเว้นว่ามันทำให้เกิดผลข้างเคียงที่ฉันไม่รู้: เมื่อคุณเรียกใช้ไฟล์ในเครื่อง (หรืออย่างน้อยไฟล์ในเครื่องที่โหลดโดยไฟล์ในเครื่องอื่น) Chrome ดูเหมือนจะ "แซนด์บ็อกซ์" พวกมัน น่าเสียดายที่ Chrome ยังปฏิเสธที่จะแก้ไขโค้ด "แซนด์บ็อกซ์" ซึ่งหมายความว่าโปรแกรมดีบักเกอร์ของฉันล้มเหลวอย่างลึกลับ

ดังนั้นสำหรับใครก็ตามที่ต้องการเรียกใช้ไฟล์ในเครื่องใน Chrome (เช่นเรียกใช้เฟรมเวิร์กการทดสอบบนเว็บ) เคล็ดลับคือเพิ่มแฟล็กด้านบนก่อน จากนั้นจึงเพิ่มแฟล็กนี้ด้วย:

--allow-sandbox-debugging

เพื่อให้ Chrome ยังคงเรียกใช้ตัวดีบั๊กเมื่อโค้ดของคุณมีบรรทัด debugger ในไฟล์ในเครื่อง

person machineghost    schedule 18.02.2013