დინამიურად ჩატვირთული 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 წერს.
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-ის გამოყენება თქვენი მოთხოვნაპრინციპის სკრიპტების ჩატვირთვისთვის. თუ კი, ეს უნდა გადაწყვიტოს თქვენი პრობლემა.
