2013-08-23 27 views
16

Tôi nhận được một lỗi tôi dường như không thể tìm ra nguyên nhân của:EOF lỗi javascript_include_tag Rails 4

EOF Error end of file reached 

gọi từ /app/views/layouts/application.html.erb, dòng 6 :

<%= javascript_include_tag "application", "data-turbolinks-track" => true %> 

Trong trường hợp ruby, lỗi EOF là phân lớp của IOError và được nâng lên bởi thao tác IO đến cuối tệp.

Dưới đây là một số những gì tôi đã phát hiện ra cho đến nay:

Sử dụng:

<%= javascript_include_tag :defaults, "data-turbolinks-track" => true %> 

... hoặc ...

<%= javascript_include_tag :all, "data-turbolinks-track" => true %> 

hoặc thậm chí liệt kê ra js cá nhân tập tin qua javascript_include_tag làm việc để loại bỏ lỗi EOF.

Tôi nghĩ điều này có thể do một số chỉ thị sprockets gây ra, vì vậy tôi đã xóa tất cả các chỉ thị trong application.js. Điều này đã không thay đổi bất cứ điều gì.

Chạy tài sản cào: precompile cũng mang lại cho tôi:

rake aborted! 
end of file reached 

Chạy git diff vào ứng dụng/tài sản/Javascripts thư mục cho thấy 1 điều mà bạn có thể lưu ý trong một file .js tôi đã được chỉnh sửa gần đây:

+$(document).on('ready page:load', function() { 
+ 
+  // some code I had written 
+ 
+}); 
\ No newline at end of file 

Điều đó "không có dòng mới ở cuối tệp" bit ... Tôi chưa bao giờ thấy điều đó trước đây. Tuy nhiên, tôi vừa chèn một dòng mới vào cuối cùng một tệp và cam kết thay đổi, và nhận xét đó giờ đã biến mất khỏi sự khác biệt.

EDIT: Chỉ trình duyệt của tôi với localhost: 3000/tài sản/application.js mang lại cho tôi điều này:

throw Error("EOFError: end of file reached") 

Tôi hoàn toàn bối rối và đã cố gắng để gỡ lỗi này cho cả ngày. Tại sao lỗi này xảy ra? Đây là stacktrace từ khi tôi chạy tài sản rake: precompile:

rake aborted! 
end of file reached 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0.rc2/lib/active_support/core_ext/marshal.rb:6:in `load' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0.rc2/lib/active_support/core_ext/marshal.rb:6:in `load_with_autoloading' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/cache/file_store.rb:19:in `block in []' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/cache/file_store.rb:19:in `open' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/cache/file_store.rb:19:in `open' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/cache/file_store.rb:19:in `[]' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/caching.rb:14:in `cache_get' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/caching.rb:84:in `cache_get_hash' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/caching.rb:54:in `cache_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/index.rb:93:in `build_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/base.rb:287:in `find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/index.rb:61:in `find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/bundled_asset.rb:37:in `init_with' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/asset.rb:24:in `from_hash' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/caching.rb:54:in `cache_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/index.rb:93:in `build_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/base.rb:287:in `find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/index.rb:61:in `find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:211:in `block in find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:257:in `benchmark' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:210:in `find_asset' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:119:in `block in compile' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:118:in `each' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:118:in `compile' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-rails-2.0.0/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-2.10.0/lib/rake/sprocketstask.rb:146:in `with_logger' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/gems/sprockets-rails-2.0.0/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/kevinyoung/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>' 
+0

Tôi bắt đầu gặp sự cố tương tự này trong vài ngày qua. Tôi đã không phát triển đường ray vào cuối tuần nhưng đã sử dụng nvm để cài đặt các phiên bản mới nhất của các gói kịch bản lệnh node và npm coffee-script. Nó không có ý nghĩa với tôi rằng điều này sẽ có tác động đến ứng dụng đường ray của tôi nhưng có thể nó? – jkndrkn

Trả lời

4

Hãy thử xóa thư mục dự án tại địa phương của bạn và kiểm tra một bản sao mới.

Tôi đã trải qua một máy chủ khởi động đường ray bị hủy ngày hôm nay có thể đã khiến hệ thống của tôi ở trạng thái không nhất quán và dẫn đến lỗi chính xác giống như bạn đang gặp phải. Một phân đoạn ruby ​​2.0.0-p0 ruby ​​dừng khởi động máy chủ đường ray của tôi, sau đó tôi không thể tải bất kỳ trang nào do lỗi nói trên.

Tôi không biết chắc chắn nguyên nhân gây ra lỗi ban đầu này. May mắn thay, tôi không phải đối phó với nó nữa vào cuối của tôi!

+0

Vâng, tôi đã thử nó hôm qua và nó đã hoạt động. Lần đầu tiên tôi đã thử quay trở lại một cam kết trước đó, nhưng tôi đã nhận được cùng một lỗi, vì vậy tôi chạy 'git clone https://github.com/mygithubusername/myrepo.git mynewrepo' để sao chép vào một thư mục cục bộ mới và vì một lý do nào đó nó bắt đầu hoạt động. – kwyoung11

+0

Có ai giải thích tại sao điều này xảy ra không? Tôi có cùng một vấn đề vào chiều nay trong công việc và nghĩ rằng thế giới đã kết thúc! Đừng cho rằng một trong hai bạn đang sử dụng đá quý Twitter? Hoặc có lẽ Rack Timeout? Họ là những bổ sung mới nhất cho codebase của tôi mà có thể đã giới thiệu này ... – stephenmurdoch

56

Nếu bạn vẫn có repo cũ nằm xung quanh, thì bạn có thể chạy bundle exec rake tmp:clear. Tôi nghĩ rằng nó sẽ sửa chữa nó.

+0

Thật không may tôi đã xóa kho lưu trữ cũ của tôi vì vậy tôi không thể kiểm tra này ra. Hy vọng rằng điều này sẽ hữu ích cho người khác với cùng một lỗi mặc dù. – kwyoung11

+3

Yay làm việc này !!! – alalani

+14

Để xây dựng trên câu trả lời này: Nguyên nhân có vẻ là bộ nhớ cache của tài sản trong thư mục tmp bị hỏng. Tôi tin rằng điều này xảy ra nếu quá trình Rails chết tại thời điểm sai. Khi bạn cố gắng khởi động lại máy chủ, chạy thử nghiệm, vv, đường ống nội dung cố gắng đọc bộ nhớ cache bị hỏng và nó sẽ bị nghẹt thở. Đó là lý do xóa bộ nhớ cache giải quyết được sự cố. – rlkw1024

2

Dọn dẹp các tập tin tạm thời sử dụng lệnh sửa sau vấn đề này:

rake tmp:clear 
0

Nếu bạn đang gặp vấn đề này trên Windows, hãy thử đi sâu vào tập tin Gemfile.lock của bạn và tự thay đổi giá trị của coffee-script-source-1.8.0 (của tôi bắt đầu là 1.9.1.1). Một cái gì đó về phiên bản mới hơn không chơi tốt đẹp vì lý do gì.