2013-08-23 68 views
16

我得到一个错误,我似乎无法找出原因:EOF错误javascript_include_tag轨道4

EOF Error end of file reached 

从/app/views/layouts/application.html.erb叫,6号线:

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

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

这里有一些什么我迄今为止的发现:

使用:

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

......或者......

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

甚至列出了个别JS文件通过javascript_include_tag工作来消除EOF错误。

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

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

rake aborted! 
end of file reached 

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

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

“没有文件结尾的换行符”位......我以前从来没有见过。但是,我在同一个文件的末尾插入了一个换行符,并提交了更改,现在这个注释已经从diff中消失了。

编辑: 指着我的浏览器到localhost:3000 /资产/ application.js中给了我这样的:

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

我彻底难倒并一直试图调试此一整天。为什么会发生此错误?下面是当我运行耙资产的堆栈跟踪:预编译:

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

最近几天我开始遇到同样的问题。我在周末没有开发rails,但是使用nvm来安装最新版本的node和npm咖啡脚本包。这对我的Rails应用程序会产生影响,但对我来说没有意义,但它可能会影响我的Rails应用程序吗? – jkndrkn

回答

4

尝试删除您的本地项目目录,检查出一个新的副本。

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

不幸的是,我不确定是什么原因导致了这种原始故障。幸运的是,我不需要再处理它了!

+0

是的,我昨天试过,它工作。我首先尝试恢复到以前的提交,但是我得到了同样的错误,所以我运行了'git clone https://github.com/mygithubusername/myrepo.git mynewrepo'克隆到一个新的本地目录中,出于某种原因它开始工作。 – kwyoung11

+0

任何人都可以解释为什么发生这种情况?今天下午我在工作中遇到了同样的问题,并认为世界已经结束了!不要以为你们中的任何一个人正在使用Twitter的宝石?或者也许机架超时?他们是我的代码库的最新成员,可能已经引入了... – stephenmurdoch

56

如果您仍旧有旧的回购商品,那么您可以运行bundle exec rake tmp:clear。我想这会解决它。

+0

不幸的是我删除了我的旧版本库,所以我无法测试这一点。但希望这对其他有相同错误的人有用。 – kwyoung11

+3

耶这工作! – alalani

+14

详细解释此答案:原因似乎是tmp文件夹中的资产缓存已损坏。如果Rails进程在错误的时刻死亡,我相信会发生这种情况。当您尝试重新启动服务器时,运行测试等操作时,资产管道会尝试读取损坏的缓存,并且它会窒息。这就是清理缓存解决问题的原因。 – rlkw1024

2

使用下面的命令修复了这个问题,清理临时文件:

rake tmp:clear 
0

如果您在Windows上这个问题,尝试进入您的Gemfile.lock文件,手动改变coffee-script-source价值1.8.0(我的开始为1.9.1.1)。某些关于较新版本的东西无论出于何种原因都不会很好。