【问题标题】:JSON error with coffeescript & Rails asset pipeline咖啡脚本和 Rails 资产管道出现 JSON 错误
【发布时间】:2013-08-26 00:46:15
【问题描述】:

我正在使用 Rails 3.2.14 没有问题...

我最近将 application.js 重命名为 application.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)")

我已经梳理了我的应用程序是否存在任何潜在问题,但一切看起来都很标准。

【问题讨论】:

  • application.js.coffee 是否也引用了其他 JS?

标签: ruby-on-rails coffeescript asset-pipeline


【解决方案1】:

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

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

【讨论】:

  • 使用 Pow 似乎也发生了一些事情。当我用 WebBrick 和 Thin 启动服务器时,两者都工作正常。但是使用 multi_json 似乎也允许它与 Pow 一起使用。谢谢!
  • @brewster 你在使用 execjs gem 吗?如果你正在使用,你必须使用 Ruby >= 2.0.0 才能正确运行。
  • exec_js 2.0.1 应该可以解决这个问题。
【解决方案2】:

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

你可以尝试添加

gem 'therubyracer'

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

【讨论】:

  • 这在 Ubuntu 13.04、nvm、Node 0.10.12 上为我解决了这个问题。在我添加“therubyracer”之前,Execjs 正在使用上述节点安装。 (另一个答案中的 multi_json 建议不起作用。)你有什么操作系统/节点?
  • 感谢this blog,我尝试将 execjs 降级到早期版本。现在看来已经解决了。
猜你喜欢
  • 2013-04-24
  • 2013-01-09
  • 2013-04-28
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2012-06-07
相关资源
最近更新 更多