2013-05-04 12 views
11

In einer meiner Rails-Anwendungen zeigt ExecJS keine Zeilennummern für Kaffeescript-Kompilierungsfehler an. Meine Kompilierung Fehlermeldung wird wie folgt aussehen:ExecJS coffee script zeigt keine Zeilennummern für Kompilierfehler (Rails-Asset-Pipeline)

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) 

Beachten Sie, dass es für die Kaffee-Skript Quelle (Zeile # 6 wird für die erb-Datei) keine Zeilennummer ist.

Auf einem anderen meiner apps, wo ich bin immer noch die Zeilennummern bekommen, sieht ein Syntaxfehler wie folgt aus:

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) 

So scheint es, der Unterschied ist, dass ExecJS::ProgramError mir die Zeilennummern geben, wo als ExecJS::RuntimeError wird nicht.

Hat jemand eine Idee, wie man die Zeilennummern zurückbekommt? Warum erstellt meine App RuntimeErrors bei der Zusammenstellung von Kaffee-Assets, während die andere ProgramErrors gibt? Ich habe Rails überprüft und sie scheinen übereinzustimmen.

Beachten Sie, dass, wenn ich die Kompilierungsfehler beheben, die App gut läuft (z. B. werden die Kaffeedateien tatsächlich kompiliert) - aber es wäre nett, wenn diese Zeilennummern mich auf die Kompilierungsfehler hinweisen!

EDIT Ich erkannte, dass ob es ein ExecJS ist Runtimeerror oder ein ProgramError scheinen keine Rolle zu - in der ersten App, gibt es nie eine Zeilennummer gegeben und in der zweiten gibt es immer.

+0

Ich bin auf 1.6.2 und ich bekomme dieses Problem. – Narfanator

+0

@Narfanator hast du meine Antwort gesehen? –

+0

Ja; Es dauerte eine Minute; Ich habe auch 1.5.0 eingestellt und es ist jetzt gut. Ich bin überrascht, dass Funktionalität verloren ging; Es ist ziemlich wichtig für die Entwicklung. – Narfanator

Antwort

18

Ich fand es heraus - es ist wegen der Edelsteinversion coffee-script-source. In der App, die Zeilennummern gab, gibt bundle show coffee-script-source von 1.4.0, während die andere App eine coffee-script-source-Version von 1.6.1 hatte.

Ich habe dies nicht bemerkt, weil der coffee-rails Edelstein diese Abhängigkeit nicht fest spezifiziert (in meinen Gemfiles verwendete ich gem 'coffee-rails', '3.2'). Um dies zu umgehen, nur explizit die Kaffee-Skript-Quelle gem Version angeben:

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

und bundle update coffee-script-source.

Hoffentlich hilft dies jedem anderen, der in diese Diskrepanz geraten könnte.

+4

Es ist seltsam, wie die neuere Version ist schlechter – Pencilcheck

+1

Ich benutze 1.6.3, gibt es keine Zeilennummern, es ist im Grunde nutzlos. Ich bin zur Verwendung der Binärdatei übergegangen, die von der Installation von coffeScript für den Knoten bereitgestellt wird – Rob