วิธีการดีบัก js ใน jsfiddle


95

ฉันกำลังดู jsfiddle นี้: http://jsfiddle.net/carpasse/mcVfK/ มันใช้งานได้ดีนั่นไม่ใช่ปัญหาฉันแค่อยากรู้วิธีการดีบักผ่านจาวาสคริปต์ ฉันพยายามใช้คำสั่งดีบักเกอร์ แต่หาไม่พบในแท็บแหล่งที่มา? มีความคิดอย่างไรที่ฉันจะแก้ไขข้อบกพร่องนี้ได้

รหัสบางส่วนจากซอ:

angular.module('app', ['appServices'])
    .config(['$routeProvider', function($routeProvider) {
        $routeProvider.
                when('/home', {templateUrl: 'home.html',   controller: HomeCtrl}).
                when('/list', {templateUrl: 'list.html',   controller: ListCtrl}).
                when('/detail/:itemId', {templateUrl: 'detail.html',   controller: DetailCtrl}).
                when('/settings', {templateUrl: 'settings.html',   controller: SettingsCtrl}).
                otherwise({redirectTo: '/home'});
}]);

2
ใส่คำdebugger;ลงในโค้ด Chrome และ Firefox จะเปิดตัวแก้ไขข้อบกพร่องแบบ step-through โดยอัตโนมัติ! (ฉันคัดลอกเคล็ดลับนี้จากคำตอบของ @ user3335908 เพื่อให้โดดเด่นยิ่งขึ้น)
Will Sheppard

คำตอบ:


54

JavaScript ถูกเรียกใช้งานจากโฟลเดอร์ fiddle.jshell.net ของแท็บ Sources ของ Chrome คุณสามารถเพิ่มเบรกพอยต์ลงในไฟล์ดัชนีที่แสดงในภาพหน้าจอ Chrome ด้านล่าง

การดีบัก JSFiddle ใน Chrome

ป้อนคำอธิบายภาพที่นี่


9
นี่ไม่แสดงอะไรสำหรับฉัน ฉันได้รับไฟล์ดัชนีว่างเปล่า
Oliver Watkins

1
@OliverWatkins มันว่างเปล่าสำหรับฉันเช่นกันฉันแก้ไขสิ่งนี้โดยคลิก "อัปเดต" ที่ด้านบนจากนั้นฉันสังเกตเห็นหลังจากที่ฉันทำงานอีกครั้งในแท็บแหล่งที่มาในแผงเครื่องมือสำหรับนักพัฒนาภายใต้ "jsfiddle.net" จากนั้นภายใต้โฟลเดอร์ที่มีชื่อของฉัน มีไดเร็กทอรีพิเศษพร้อมไฟล์ดัชนีอื่นที่แสดงรหัส หวังว่านี่จะช่วยได้!
MilesMorales

ฉันมีโฟลเดอร์ที่ 3 ภายใต้ fiddle.jshell.net ซึ่งมี (ดัชนี) ด้วย ถ้าเปิดขึ้นมาจะมีไฟล์ html ที่มี js ฝังอยู่ (ในบรรทัดที่ 48 เมื่อฉันเขียนสิ่งนี้)
John MacIntyre

fiddle.jshell.netมีเพียง_displayที่มี(index)อยู่ภายในซึ่งเป็นหน้า HTML <p>That page doesn't exist.</p>เกือบจะว่างเปล่ากับ รหัส js ของฉันไม่มี
CygnusX1

36

ใช้debugger;คำสั่งในรหัส เบราว์เซอร์จะแทรกเบรกพอยต์ไว้ที่คำสั่งนี้และคุณสามารถดำเนินการต่อในดีบักเกอร์ของเบราว์เซอร์

สิ่งนี้ควรใช้งานได้อย่างน้อยที่สุดใน chrome และ firefox https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/debugger

angular.module('app', ['appServices'])
.config(['$routeProvider', function($routeProvider) {
    // *** Debugger invoked here
    debugger;
    $routeProvider.
            when('/home', {templateUrl: 'home.html',   controller: HomeCtrl}).
            when('/list', {templateUrl: 'list.html',   controller: ListCtrl}).
            when('/detail/:itemId', {templateUrl: 'detail.html',   controller: DetailCtrl}).
            when('/settings', {templateUrl: 'settings.html',   controller: SettingsCtrl}).
            otherwise({redirectTo: '/home'});
}]);

นี่คือคำตอบที่ดีที่สุด!
vibs2006

6

สิ่งที่ควรค่าแก่การกล่าวถึง หากคุณเคยใช้เครื่องมือ Chrome dev กดctrl+ shift+ Fและคุณสามารถค้นหาไฟล์ทั้งหมดในแหล่งที่มา


2
ซึ่งมีประโยชน์มากบน Mac คือ Cmd + Alt + F
John W. Clark

นี่จะเป็นคำตอบที่ดีกว่ามาก แต่เบรกพอยต์ที่ตั้งไว้บนโค้ดที่คุณพบด้วยวิธีนี้จะไม่ได้รับเกียรติ
Slbox

ขอบคุณสำหรับคำแนะนำนี้ฉันสามารถหารหัสในไฟล์ที่ไม่ปรากฏใน
GarfieldKlon

3

นอกจากคำตอบอื่น ๆ

บ่อยครั้งที่มีประโยชน์เพียงแค่เขียนข้อมูลการดีบักลงในคอนโซล:

console.log("debug information here");

เอาต์พุตมีอยู่ในคอนโซล dev tools ของเบราว์เซอร์ เหมือนมันถูกบันทึกจากรหัสจาวาสคริปต์ปกติ
สิ่งนี้ค่อนข้างง่ายและมีประสิทธิภาพ



0

ที่นี่เป็นอีกที่หนึ่ง :)

ภายใต้Jsfiddle.netโหนด

ป้อนคำอธิบายภาพที่นี่


นี้ดูเหมือนว่าจะ cointain รหัสที่มาที่แสดงบนหน้าล้อมรอบด้วย...<pre> </pre>ไม่ใช่รหัสที่รันได้จริง
CygnusX1

คุณไม่สามารถดีบักรหัสนี้ คำใบ้อย่างหนึ่งที่คุณขาดไม่ได้คือไฮไลต์ที่ขาดหายไป ...
GarfieldKlon

0

JavaScript ถูกเรียกใช้งานจากไฟล์?editor_console=trueในโฟลเดอร์result (fiddle.jshell.net)/fiddle.jshell.net/_displayโฟลเดอร์ของแท็บ Sources ของ Chrome เมื่อใช้เครื่องมือ Developper คุณสามารถเพิ่มเบรกพอยต์ลงในโค้ดของคุณจากนั้นรีเฟรชหน้า ป้อนคำอธิบายภาพที่นี่

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ดีบักเกอร์ chrome ได้ที่พยายามดีบัก Javascript ใน Chrome

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.