Rails在CSS预编译中出现错误

8
Invalid CSS after "}": expected selector or at-rule, was "}"
  (in /home/test/www/dispatch/app/assets/stylesheets/application.css)
(sass):364

上述错误出现在我的预编译中,我无法找到问题。我已经尝试将文件重命名为 application.css.scss ,但是仍然得到相同的错误,不同的行号是 :405
让我感到困惑的是,这个文件只有 159 行,我不确定那个行号从哪里来。
我正在本地机器上进行预编译,因为昨晚在尝试生产迁移时发生了此错误。

谢谢,问题就是缺少了一个分号。我学到了教训,我不知道所有的东西都编译到那个文件里了。非常感谢你提供的信息。 - user1214966
没问题,很高兴能帮到你。如果你不介意把它标记为已答复,我会把我的评论移动为答案,以便其他人阅读。感谢您的配合,祝您编程愉快。 - Donavan White
5个回答

13
如果这是你的 application.css 文件,那么它会将所有的 CSS 编译到该文件中,因此问题可能不在于该文件本身,而是它所编译的某个文件中。检查代码是否缺少分号。

3
我讨厌这些错误,因为它们没有提供任何堆栈跟踪。所以一旦发生这种情况,你就被迫花费几个小时来搜索那个分号。我希望Rails的开发人员能够尽快解决这个问题。
同时,我找到了一个很好的方法来检测这种错误,即通过CSS编译器或压缩器进行传递。在我的应用程序中,我们使用SASS,所以我可以调用:
sass --style compressed --scss -C your_problematic_file.css

这将告诉您该文件是否有任何错误,以及行号。您需要在可能是问题源的每个CSS文件上运行此操作。

在我的情况下,是媒体查询周围有多余的}


这很有帮助,但我仍然有问题。运行后似乎一切都没问题,但我却收到了错误提示! - Aboozar Rajabi

2
我同意@Digi_Cazter的观点。但是,由于放置了无效括号(例如

),同样可能发生相同的错误。
.someclass{
  property: value;
}}

1

我漏写了分号。在声明"$grayMediumLight"的行末,我的分号被遗漏了。也许这能为别人节省我花费的30分钟。


0
很高兴你找到并解决了错误,但我想再为像我这样的新手解释一下,他们可能需要在不同的地方查找解决方法。
我也遇到了这个问题。对我来说,example.css.scss 预编译成了 /public/example.css,一个额外的 “}” 被添加到了媒体查询的末尾 - 即使在 /example.scss.css 中没有错误。
对于其他有这个问题的人,你可以使用类似 Kaleidoscope 的工具比较 SCSS 和 CSS,以检查是否在预编译期间出现任何语法错误,并从那里进行故障排除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接