2013-08-23 28 views
10

Tôi đang sử dụng Rails 3.2.14 mà không vấn đề ...JSON lỗi với coffeescript & Rails đường ống tài sản

Gần đây tôi đã đổi tên thành application.js-application.js.coffee và bây giờ nhận được một lỗi JSON.

JSON::GeneratorError 

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

Ngay cả khi tôi xóa tất cả nội dung của application.js.coffee Tôi vẫn gặp lỗi.

Khi tôi cố gắng trực tiếp (http://localhost:3000/assets/application.js) để xem nó, cùng một vấn đề của nó:

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

Tôi đã chải kỹ ứng dụng của tôi đối với bất kỳ vấn đề tiềm năng nhưng tất cả mọi thứ trông khá chuẩn.

+0

Ứng dụng.js.coffee có tham chiếu đến JS khác không? – techvineet

Trả lời

6

Tôi gặp sự cố tương tự (Rails 4 asset pipeline throws "only generation of JSON objects or arrays allowed"), không liên quan gì đến application.js. Đá quý multi_json đã được cập nhật từ 1.7.8 lên 1.7.9 và đã phá vỡ ứng dụng của tôi. Bất kỳ thay đổi nào đối với các tệp cofeescript đều dẫn đến lỗi "thế hệ duy nhất của các đối tượng JSON hoặc mảng được phép" này.

Tôi đặt đá quý multi_json vào Gemfile của tôi một cách rõ ràng, được sửa thành phiên bản 1.7.8. Trong giải quyết vấn đề cho tôi.

+1

Dường như có điều gì đó đang xảy ra với việc sử dụng Pow. Khi tôi khởi động máy chủ với WebBrick và Thin, cả hai đều hoạt động tốt. Nhưng việc sử dụng multi_json dường như cũng cho phép nó hoạt động với Pow. Cảm ơn! – brewster

+1

@ brewster là bạn sử dụng đá quý execjs? Nếu bạn đang sử dụng, bạn phải sử dụng Ruby> = 2.0.0 để chạy đúng. – seixasfelipe

+0

exec_js 2.0.1 nên khắc phục sự cố. –

5

Tôi có vấn đề về lưu không nằm trong dự án Rails, mà là một dự án ruby ​​sử dụng sprockets. Tôi cuối cùng đã không xác định được vấn đề, nhưng nó có vẻ liên quan đến execjs và thời gian chạy Javascript được sử dụng.

Bạn có thể cố gắng thêm

gem 'therubyracer'

để Gemfile của bạn. Điều này cài đặt động cơ v8, giải quyết vấn đề cho tôi.

+0

Điều này giải quyết nó cho tôi trên Ubuntu 13.04, nvm, Nút 0.10.12. Execjs đã sử dụng cài đặt Node đã nói trước đó trước khi tôi thêm 'therubyracer'. (Đề xuất multi_json trong câu trả lời khác không hoạt động.) Bạn có hệ điều hành/nút nào? –

+0

Tôi đã thử hạ cấp các phiên bản execjs xuống phiên bản cũ hơn nhờ [blog này] (http://www.seanbehan.com/json-generatorerror-only-generation-of-json-objects-or-arrays-allowed). Điều đó dường như đã sửa nó ngay bây giờ. –

Các vấn đề liên quan