2013-08-23 14 views
10

Używam Rails 3.2.14 bez problemu ...błąd JSON z coffeescript & Rails aktywów rurociągu

ja niedawno przemianowany application.js do application.js.coffee i teraz otrzymuję błąd JSON.

JSON::GeneratorError 

only generation of JSON objects or arrays allowed 
    (in /.../app/assets/javascripts/application.js.coffee) 

Nawet kiedy usunąć całą zawartość application.js.coffee nadal pojawia się błąd.

Kiedy próbuję go zobaczyć bezpośrednio (http://localhost:3000/assets/application.js), jej ten sam problem:

throw Error("JSON::GeneratorError: only generation of JSON objects or arrays allowed\n (in /.../app/assets/javascripts/application.js.coffee)") 

Mam czesane moją aplikację dla ewentualnych problemów, ale wszystko wygląda dość standardowy.

+0

Czy application.js.coffee zawiera również odniesienia do innych JS? – techvineet

Odpowiedz

6

Miałem podobny problem (Rails 4 asset pipeline throws "only generation of JSON objects or arrays allowed"), który nie miał nic wspólnego z application.js. Klejnot multi_json został zaktualizowany z wersji 1.7.8 na 1.7.9 i złamał moją aplikację. Każda zmiana w plikach cofbagcript spowodowała błąd "tylko generacja obiektów JSON lub tablic dozwolonych".

Ja jawnie umieszczam klejnot multi_json w moim Gemfile, naprawiony do wersji 1.7.8. W rozwiązaniu problemu dla mnie.

+1

Wydaje się również, że coś się dzieje z użyciem Pow. Kiedy uruchomiłem serwer z WebBrick i Thin, oba działały dobrze. Ale użycie multi_json zdawało się pozwalać mu pracować również z Powem. Dzięki! – brewster

+1

@brewster używasz gemji execjs? Jeśli używasz, musisz poprawnie używać Ruby> = 2.0.0. – seixasfelipe

+0

exec_js 2.0.1 powinien naprawić problem. –

5

Mam problem z oszczędzaniem nie w projekcie Rails, ale w projekcie z rubinem z kołami łańcuchowymi. Nie udało mi się ostatecznie ustalić problemu, ale wydaje się, że jest on powiązany z execjs i używanym środowiskiem wykonawczym Javascript.

Można spróbować dodać

gem 'therubyracer'

do Gemfile. To instaluje silnik v8, który rozwiązał problem dla mnie.

+0

Rozwiązało to dla mnie w Ubuntu 13.04, nvm, Node 0.10.12. Execjs korzystał z tej instalacji węzła przed dodaniem "therubyracera". (Sugestia multi_json w drugiej odpowiedzi nie zadziałała.) Jaki masz OS/węzeł? –

+0

Próbowałem zmienić klasyfikację execjs na wcześniejszą wersję dzięki [this blog] (http://www.seanbehan.com/json-generatorerror-only-generation-of-json-objects-or-array-allowed). To chyba naprawiło to na razie. –