Javascript 未定义方法导致的预编译资产错误

Javascript 未定义方法导致的预编译资产错误,javascript,css,ruby-on-rails,ruby,asset-pipeline,Javascript,Css,Ruby On Rails,Ruby,Asset Pipeline,我在我的应用程序上做了一些工作,最近我运行了 rake资产:预编译:主RAILS\u ENV=production--trace 最终结果是出现以下错误: NoMethodError:nil:NilClass的未定义方法“bytesize” 一点信息都没有,追踪对我也没什么帮助 ** Invoke assets:precompile:primary (first_time) ** Invoke assets:environment (first_time) ** Execute assets:e

我在我的应用程序上做了一些工作,最近我运行了

rake资产:预编译:主RAILS\u ENV=production--trace

最终结果是出现以下错误:

NoMethodError:nil:NilClass的未定义方法“bytesize”

一点信息都没有,追踪对我也没什么帮助

** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
NoMethodError: undefined method `bytesize' for nil:NilClass
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rack-1.4.7/lib/rack/utils.rb:300:in `bytesize'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:13:in `initialize'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:249:in `new'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:249:in `block in build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:270:in `circular_call_protection'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:248:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:93:in `block in build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/caching.rb:19:in `cache_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:92:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:169:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:60:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:111:in `block in resolve_dependencies'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:105:in `each'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:105:in `resolve_dependencies'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:97:in `build_required_assets'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/processed_asset.rb:16:in `initialize'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:249:in `new'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:249:in `block in build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:270:in `circular_call_protection'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:248:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:93:in `block in build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/caching.rb:19:in `cache_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:92:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:169:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:60:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/bundled_asset.rb:16:in `initialize'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:252:in `new'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:252:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:93:in `block in build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/caching.rb:19:in `cache_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:92:in `build_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:169:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/index.rb:60:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/environment.rb:78:in `find_asset'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/actionpack-3.2.22.1/lib/sprockets/static_compiler.rb:19:in `block in compile'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:219:in `block in each_logical_path'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:206:in `block (2 levels) in each_file'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:196:in `each'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:196:in `each_entry'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:204:in `block in each_file'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:203:in `each'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:203:in `each_file'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/sprockets-2.2.3/lib/sprockets/base.rb:217:in `each_logical_path'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/actionpack-3.2.22.1/lib/sprockets/static_compiler.rb:18:in `compile'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/actionpack-3.2.22.1/lib/sprockets/assets.rake:56:in `internal_precompile'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/actionpack-3.2.22.1/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:240:in `call'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:240:in `block in execute'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:235:in `each'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:235:in `execute'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/Users/jasontanner/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:172:in `invoke_with_call_chain'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/task.rb:165:in `invoke'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:150:in `invoke_task'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:106:in `each'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:106:in `block in top_level'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:115:in `run_with_threads'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:100:in `top_level'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:78:in `block in run'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:176:in `standard_exception_handling'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/lib/rake/application.rb:75:in `run'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/gems/rake-10.5.0/bin/rake:33:in `<top (required)>'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/bin/rake:19:in `load'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/bin/rake:19:in `<main>'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `eval'
/Users/jasontanner/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => assets:precompile:primary

所以我的问题是。为什么我不能预编译我的资产,我该如何修复?我正在运行Rails
3.2.22

关于这个问题,我做了一些深入的研究,似乎它可能发生至少有两个原因:

1) 你有空资产

2) 您的一个资源中有非utf8字符(请检查代码中带有重音符号等字符的注释)


有关“require”(特别是通过“将空类添加到application.css的底部”来解决问题的人)的参考信息,请参见此github.com/zweilove/css_splitter/issues/12。也可以尝试通过删除清单中的所有资产来进行调试,然后开始逐个添加,直到其中断。祝你好运

关于这个问题,我做了一些深入的研究,似乎它的发生至少有两个原因:

1) 你有空资产

2) 您的一个资源中有非utf8字符(请检查代码中带有重音符号等字符的注释)


有关“require”(特别是通过“将空类添加到application.css的底部”来解决问题的人)的参考信息,请参见此github.com/zweilove/css_splitter/issues/12。也可以尝试通过删除清单中的所有资产来进行调试,然后开始逐个添加,直到其中断。祝你好运

我对一个JavaScript文件做了这个问题,该文件有一些奇怪的格式(来自prettier库),Rails对此提出了异议

NoMethodError: undefined method `bytesize' for nil:NilClass
/Users/joel/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/rack-1.6.8/lib/rack/utils.rb:380:in `bytesize'
/Users/joel/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/sprockets-2.12.4/lib/sprockets/processed_asset.rb:13:in `initialize'
为了找出哪个文件,我深入到gem路径,在sprockets/processed_asset.rb中添加了一些代码来打印文件:

  context = environment.context_class.new(environment, logical_path, pathname)
  @source = context.evaluate(pathname)
  p pathname
  @length = Rack::Utils.bytesize(source)

下一次我编译资产时,它向我显示了罪魁祸首。

我对一个JavaScript文件做了这个问题,该文件有一些奇怪的格式(来自更漂亮的库),Rails对此提出了异议

NoMethodError: undefined method `bytesize' for nil:NilClass
/Users/joel/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/rack-1.6.8/lib/rack/utils.rb:380:in `bytesize'
/Users/joel/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/sprockets-2.12.4/lib/sprockets/processed_asset.rb:13:in `initialize'
为了找出哪个文件,我深入到gem路径,在sprockets/processed_asset.rb中添加了一些代码来打印文件:

  context = environment.context_class.new(environment, logical_path, pathname)
  @source = context.evaluate(pathname)
  p pathname
  @length = Rack::Utils.bytesize(source)

下次我编译资产时,它向我显示了罪魁祸首。

您使用的是哪种版本的rake?我对这个问题做了一些深入的研究,似乎它会发生至少有两个原因:1)您的资产为空2)您的资产中有一个非utf8字符(检查代码中带有重音符号等字符的注释)。请参阅此参考,了解通过“将空类添加到application.css底部”解决问题的人员也可以尝试通过删除清单中的所有资产进行调试,然后开始逐个添加,直到其中断。祝您好运!@МаъСъъъъъrake,版本10.4。2@rii,我会查出来的。我想可能是资产,但完成这项任务是一项艰巨的任务。我确实知道我没有任何空文件。我会查找非空文件-utf8字符。是的,你可以暂时注释掉所有字符,看看这是否真的是原因。如果可以,请取消注释其中的一半,看看是否发生了。如果发生了,那么至少你知道问题出现在哪一半的资产中,等等。你使用了哪种版本的rake?我对此做了一些挖掘s的问题,它似乎可以发生至少有两个原因:1)您有空的资产2)有一个非utf8字符在您的资产(检查注释中的字符重音等)。请参阅本文,以了解通过“将空类添加到application.css的底部”来解决问题的人员,也可以尝试通过从清单中删除所有资产来进行调试,然后开始逐个添加,直到其中断。祝你好运@МаъСъъъСъъъъ耙,版本10.4。2@rii,我去看看。我认为这可能是资产,但完成这项任务是一项艰巨的任务。我知道我没有任何空文件。我将查找非utf8字符。是的,您可以暂时注释掉所有字符,看看这是否确实是原因。如果有效,请取消其中一半的注释,并查看是否发生。如果发生这种情况,那么至少你知道问题出在哪一半资产上,依此类推。