EOF错误javascript_include_tag Rails 4

kwy*_*g11 17 javascript ruby git ruby-on-rails ruby-on-rails-4

我收到一个错误,我似乎无法弄清楚原因:

EOF Error end of file reached 
Run Code Online (Sandbox Code Playgroud)

从/app/views/layouts/application.html.erb第6行调用:

<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

在ruby中,EOF错误是IOError的子类,并且由到达文件末尾的IO操作引发.

这是我到目前为止发现的一些内容:

使用:

<%= javascript_include_tag :defaults, "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

...要么...

<%= javascript_include_tag :all, "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

甚至通过javascript_include_tag工作列出单个js文件以删除EOF错误.

我认为这可能是由一些sprockets指令引起的,所以我删除了application.js中的所有指令.这并没有改变任何事情.

运行rake资产:预编译也给了我:

rake aborted!
end of file reached 
Run Code Online (Sandbox Code Playgroud)

运行git diff在应用程序/资产/ JavaScript的目录显示1两件事,可能在我最近被编辑.js文件是值得注意的:

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

那"文件末尾没有新行"有点......我以前从未见过.但是,我刚刚在同一个文件的末尾添加了一个换行符并提交了更改,而该注释现在已从diff中消失了.

编辑:将我的浏览器指向localhost:3000/assets/application.js给了我这个:

throw Error("EOFError: end of file reached")
Run Code Online (Sandbox Code Playgroud)

我彻底难过,一直试图调试这一整天.为什么会出现此错误?这是我运行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>'
Run Code Online (Sandbox Code Playgroud)

ste*_*och 58

如果你还有旧的回购物,那么你就可以跑了bundle exec rake tmp:clear.我估计会解决它.

  • 详细说明这个答案:原因似乎是tmp文件夹中的资产缓存已损坏.我相信如果Rails进程在错误的时刻死亡,就会发生这种情况.当您尝试重新启动服务器,运行测试等时,资产管道会尝试读取损坏的缓存,并且它会阻塞.这就是清除缓存解决问题的原因. (14认同)

jkn*_*rkn 4

尝试删除本地项目目录并签出新副本。

我今天经历了一次中止的 Rails 服务器启动,这可能使我的系统处于不一致的状态,并导致与您遇到的错误完全相同。ruby 2.0.0-p0 段错误停止了我的 Rails 服务器启动,之后由于上述错误,我无法加载任何页面。

不幸的是,我不确定是什么导致了这个最初的失败。幸运的是,我不必再处理这个问题了!