Rails资产管道不指示哪个文件产生错误

时间:2015-12-23 20:28:09

标签: ruby-on-rails coffeescript sprockets

我不能为我的生活找出如何让Sprockets指出哪个文件导致编译错误。我只是得到如下错误:

的CoffeeScript

  

在14671ms完成500内部服务器错误(ActiveRecord:281.4ms)

     

ExecJS :: RuntimeError - SyntaxError:[stdin]:1:5:意外,:
  execjs(2.6.0)lib / execjs / external_runtime.rb:84:在`extract_result'中   < backtrace continue>

可以通过将以下内容添加到包含的.coffee文件的无效语法来触发:

test,

萨斯

  

在14671ms完成500内部服务器错误(ActiveRecord:281.4ms)

     

Sass :: SyntaxError - “0”后的CSS无效:预期表达式(例如1px,粗体)为“;”:
  sass(3.4.20)lib / sass / scss / parser.rb:1179:在'预期'中   < backtrace continue>

可以通过将分号添加到.sass文件来触发:

.test
  top: 0;

如果出现警告,服务器日志会显示有用的内容,例如

  

/path/to/file.sass第9行的警告:   此选择器没有任何属性,也不会呈现。

但是,语法错误似乎只会导致500错误,并告诉我该行&错误的列,但不是它所在的文件。我已经通过回溯挖掘它们并没有给出发生错误的文件的任何指示。如何获取输出以显示发生SyntaxError的文件?

版本(撰写本文时的最新内容):

  • Rails 4.2.5
  • Sprockets-Rails 3.0.0
  • 链轮3.5.2
  • Sass-Rails 5.0.4
  • Sass 3.4.20
  • Coffee-Rails 4.1.0
  • Coffee-Script 2.4.1
  • Coffee-Script-Source 1.10.0

2 个答案:

答案 0 :(得分:1)

继续阅读服务器中的500错误。它应该显示导致错误的文件和文件行。以下示例显示 app / assets / stylesheets / test.sass:2

Completed 500 Internal Server Error in 152ms (ActiveRecord: 0.0ms)

ActionView::Template::Error (Invalid CSS after "0": expected expression (e.g. 1px, bold), was ";"):
    2: <html>
    3: <head>
    4:   <title>StackoverflowQuestions</title>
    5:   <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    6:   <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
    7:   <%= csrf_meta_tags %>
    8: </head>
  app/assets/stylesheets/test.sass:2
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__1109435584510058936_70275420820360'

答案 1 :(得分:1)

一种解决方法是在rails之外自己编译.coffee文件以获得正确的错误消息。见https://stackoverflow.com/a/41700235/1836506