2013-08-23 14 views
10

Sto usando Rails 3.2.14 senza problema ...errore JSON con CoffeeScript & Rails patrimoniale gasdotto

ho recentemente rinominato application.js-application.js.coffee e ora sto ottenendo un errore di JSON.

JSON::GeneratorError 

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

Anche quando elimino tutti i contenuti di application.js.coffee ancora ottengo l'errore.

Quando provo a vederlo direttamente (http://localhost:3000/assets/application.js), la sua lo stesso problema:

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

ho pettinato la mia app per tutti i potenziali problemi, ma tutto sembra piuttosto standard.

+0

Does it.js.coffee ha anche riferimenti ad altri JS? – techvineet

risposta

6

Ho avuto un problema simile (Rails 4 asset pipeline throws "only generation of JSON objects or arrays allowed"), che non aveva nulla a che fare con application.js. La gemma multi_json è stata aggiornata dalla 1.7.8 alla 1.7.9 e ha rotto la mia app. Qualsiasi modifica ai file cofeescript ha comportato l'errore "solo generazione di oggetti JSON o array consentiti".

Ho messo esplicitamente la gemma multi_json nel mio Gemfile, corretta alla versione 1.7.8. Ho risolto il problema per me.

+1

Sembra anche che ci sia qualcosa in corso con l'uso di Pow. Quando ho avviato il server con WebBrick e Thin, entrambi hanno funzionato bene. Ma usare multi_json sembrava consentirgli di lavorare anche con Pow. Grazie! – brewster

+1

@brewster stai usando execjs gem? Se stai usando, devi usare Ruby> = 2.0.0 per funzionare correttamente. – seixasfelipe

+0

exec_js 2.0.1 dovrebbe risolvere il problema. –

5

Ho il problema di salvataggio non in un progetto Rails, ma un progetto rubino con pignoni. Non ho ancora determinato il problema, ma sembra essere correlato a execjs e al runtime Javascript usato.

Si può provare ad aggiungere

gem 'therubyracer'

al vostro Gemfile. Questo installa il motore V8, che ha risolto il problema per me.

+0

Questo lo ha risolto per me su Ubuntu 13.04, nvm, Nodo 0.10.12. Execjs stava usando l'installazione di questo nodo prima di aggiungere "therubyracer". (Il suggerimento multi_json nell'altra risposta non ha funzionato.) Quale OS/Nodo hai? –

+0

Ho provato a eseguire il downgrade di execjs a una versione precedente grazie a [questo blog] (http://www.seanbehan.com/json-generatorerror-only-generation-of-json-objects-or-arrays-allowed). Sembra che l'abbia risolto per ora. –

Problemi correlati