2013-08-23 149 views
10

JSON的错误,我用Rails 3.2.14没有问题...用的CoffeeScript及滑轨资产管道

我最近改名application.jsapplication.js.coffee,我现在得到一个JSON错误。

JSON::GeneratorError 

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

即使当我删除的application.js.coffee所有内容我仍然得到错误。

当我试图直接(http://localhost:3000/assets/application.js)查看它,它同样的问题:

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

我已经梳理我的应用程序对于任何潜在的问题,但一切看起来很标准。

+0

application.js.coffee是否也有对其他JS的引用? – techvineet

回答

6

我有一个类似的问题(Rails 4 asset pipeline throws "only generation of JSON objects or arrays allowed"),这与application.js无关。 multi_json的宝石从1.7.8更新到1.7.9,并打破了我的应用程序。任何对cofeescript-files的更改都会导致“仅允许生成JSON对象或数组”的错误。

我明确地将multi_json gem放在我的Gemfile中,修正为版本1.7.8。为我解决了这个问题。

+1

使用Pow也似乎在发生。当我用WebBrick和Thin启动服务器时,两者都可以正常工作。但是使用multi_json似乎也允许它与Pow一起工作。谢谢! – brewster

+1

@brewster是否在使用execjs gem?如果您正在使用,则必须使用Ruby> = 2.0.0才能正常运行。 – seixasfelipe

+0

exec_js 2.0.1应该解决这个问题。 –

5

我有保存问题不是在Rails项目中,而是使用链轮的红宝石项目。 我还没有最终确定问题,但它似乎与execjs和使用的Javascript运行时相关。

你可以尝试

gem 'therubyracer'

添加到您的Gemfile。这安装了v8引擎,为我解决了这个问题。

+0

这在Ubuntu 13.04,nvm,Node 0.10.12上为我解决了这个问题。在我添加'therubyracer'之前,Execjs使用了所述的节点安装。 (其他答案中的multi_json建议不起作用。)你有什么操作系统/节点? –

+0

由于[此博客](http://www.seanbehan.com/json-generatorerror-only-generation-of-json-objects-or-arrays-allowed),我试图将execjs降级到早期版本。这似乎已经解决了它现在。 –