დინამიურად ჩატვირთული Javascript-ის დებაგირება, რომელიც TypeScript-დან აღინიშნება Chrome-ში


VS 2012-ით, Web Essentials-ით, TypeScript 0.8.3-ით

შეიძლება არსებობდეს TypeScript ფაილი "test.ts". ის კომპილირდება "test.js"-ში, რომლის ბოლოს ასევე არის sourceMappingURL.

//@ sourceMappingURL=test.js.map

Javascript ფაილი დინამიკურად იტვირთება $.getScript-ით. თუმცა, Chrome Developer Tools-ში წყარო არსად მოვნახე, ამიტომ ბრეკპოინტი ვერ დაყენდება.

თუ მე ხელით შევიტან ცვლილებებს გენერირებულ Javascript-ში sourceURL-ის დამატებით, მდგომარეობა უმჯობესდება.

//@ sourceMappingURL=test.js.map
//@ sourceURL=test.ts

სახელი "test.ts" ნაპოვნია Chrome-ის Sources ხეში. თუმცა, მისზე დაწკაპებით იხსნება Javascript ფაილი "test.js". იქ შეგვიძლია დავადგათ და გამოვიყენოთ breakpoints-ები.

საქმის მდგომარეობა ასეთია, მნიშვნელობა არა აქვს, სწორად არის დაპროგრამებული სახელწოდება „test.ts“ თუ რაიმე სხვა სახელი.

რა უნდა გაკეთდეს, რათა TypeScript ფაილის დებაგირება, რომლის გენერირებული Javascript ფაილი დინამიურად ჩაიტვირთა, Chrome-ით შესაძლებელი გახდეს?

მე ასევე ვცადე კენარიც. განსხვავება არ ყოფილა.

უპასუხე #1

მე ვწერ იმის დასადასტურებლად, რასაც WhyMe წერს. -ის შიგნით jQuery.append()-ის გამოყენებით დამატება სურათების გამრავლებულ სიას ფაილის სახელს ვერ უმატებს, მაგრამ DOM ელემენტის .appendChild-ის გამოყენება ფაილის სახელს უმატებს სურათების გამრავლებულ სიას.

var fileref = document.createElement('script');
                    fileref.setAttribute("type", "text/javascript");
                    fileref.setAttribute("src", 'Scripts/app/Views/Management/Spock.js');
                    document.getElementsByTagName("head")[0].appendChild(fileref)

Spock.js იქნება სწორ ფოლდერში სურათების ხესში.

გამოყენებით //# source=Path_to_file მუშაობს, მაგრამ A. უნდა ჰქონდეს სწორი გზის მითითება, და B. ფაილის სახელი ჩანს <No Domain>-ის ქვეშ; რაც ნამდვილად უშნოა.

პოსტის ქვეშ - მე არ მაქვს 50 რეპუტაციის ქულა, ამიტომ ვერ მივცემ პასუხს კომენტარის სახით WhyMe-ის კომენტარზე, მაგრამ შემიძლია შევიტანო პასუხი?

პასუხი #2

მუშაობა Chrome Canary-ში (25.0.1364.172 m), და require.js-ის გამოყენებით სკრიპტების დინამიურად დასატვირთად, შემიძლია დავაყენო და გამოვიყენო ბრეკპოინტები TypeScript ფაილებზე:

გაითვალისწინეთ, რომ ეს მუშაობს მხოლოდ იმ კოდზე, რომელიც შეესაბამება გარკვეულ JS გამომავალს - ასე რომ (ლოგიკურად საკმარისად) ვერ დააყენებთ ბრექპოინტს ინტერფეისის განსაზღვრაში არსებულ ნებისმიერ ადგილას.

მე დარწმუნებული არ ვარ, გონივრულია თუ არა require.js-ის გამოყენება თქვენი მოთხოვნაპრინციპის სკრიპტების ჩატვირთვისთვის. თუ კი, ეს უნდა გადაწყვიტოს თქვენი პრობლემა.