2013-05-04 7 views
11

W jednej z moich aplikacji Railsowych ExecJS nie wyświetla numerów linii dla błędów kompilacji coffeescript. Moje kompilacji komunikat o błędzie będzie wyglądać następująco:Skrypt programu ExecJS nie wyświetlający numerów wierszy dla błędów kompilacji (potok zasobów Rails)

ExecJS::RuntimeError in Referrals#new 

Showing ~/MyApp/app/views/layouts/application.html.erb where line #6 raised: 

SyntaxError: unexpected IDENTIFIER 
    (in ~/MyApp/assets/javascripts/utils.js.coffee) 

Zauważ, że nie ma numer linii do źródła coffeescript (linia nr 6 jest dla pliku erb).

Na innym jednej z moich aplikacji, gdzie nadal jestem uzyskiwanie numery linii, błąd składni wygląda następująco:

ExecJS::ProgramError in Projects#show 

Showing ~/OtherApp/app/views/layouts/application.html.erb where  line #17 raised: 

Error: Parse error on line 6: Unexpected 'STRING' 
(in ~/OtherApp/app/assets/javascripts/projects.js.coffee) 

Więc wydaje się, że różnica jest taka, że ​​ExecJS::ProgramError da mi numery linii, gdzie jako ExecJS::RuntimeError nie będzie.

Ktoś ma pojęcie, jak odzyskać numery linii? Dlaczego moja aplikacja tworzy RuntimeErrors na kompilacji zasobów kawy, a druga daje progi programu? Sprawdziłem Railsy i wydają się pasować.

Pamiętaj, że jeśli naprawię błędy kompilacji, aplikacja działa poprawnie (np. Pliki kawy faktycznie się kompilują) - ale byłoby miło, gdyby te numery linii wskazywały mi błędy kompilacji !.

EDIT zdałem sobie sprawę, że to, czy jest to ExecJS Runtimeerror lub ProgramError nie wydają się znaczenia - w pierwszej aplikacji, tam nigdy nie jest dany numer linii i na sekundę, nie zawsze tak jest.

+0

Jestem na 1.6.2 i otrzymuję ten problem. – Narfanator

+0

@ Narfanator widziałeś moją odpowiedź? –

+0

Tak; zajęło mi to minutę; Ustawiłem też na 1.5.0 i teraz jest dobrze. Jestem zaskoczony, że utracono funkcjonalność; to jest bardzo istotne dla rozwoju. – Narfanator

Odpowiedz

18

Wyjaśniałem to - to zasługa wersji gem coffee-script-source. W aplikacji, która podawała numery linii, bundle show podaje źródło kawy-skryptu w wersji 1.4.0, podczas gdy druga aplikacja miała wersję 1.6.1 dla wersji skryptowej.

Nie zauważyłem tego, ponieważ klejnot coffee-rails nie ściśle określa tę zależność (w obu moich Gemfiles, użyłem gem 'coffee-rails', '3.2'). Aby obejść ten problem, po prostu jawnie określić coffeescript source gem wersję:

gem 'coffee-rails', '3.2.2' 
gem 'coffee-script-source', '1.5.0' 

i bundle update coffee-script-source.

Mam nadzieję, że pomoże to każdemu, kto wpadnie w tę rozbieżność.

+4

To dziwne, jak nowsza wersja jest gorsza – Pencilcheck

+1

Używam 1.6.3, nie ma numerów linii, to w zasadzie bezużyteczne. Przestawiłem się na używanie pliku binarnego dostarczanego przez instalację węzła coffeescript – Rob

Powiązane problemy