启用JavaScript的测试(Bootstrap 3、Rails 4、Travis CI)出错

Error with JavaScript enabled tests (Bootstrap 3, Rails 4, Travis CI)

本文关键字:Rails Travis CI 出错 JavaScript 测试 Bootstrap 启用      更新时间:2023-09-26

我有奇怪的错误,只出现在CI环境。此错误不会出现在开发、生产甚至本地测试环境中。

ActionController::RoutingError: No route matches [GET] "/fonts/bootstrap/glyphicons-halflings-regular.svg"

可以在这里找到完整的跟踪

在开发和生产环境中,请求成功转到/assets/bootstrap/glyphicons-halflings-regular.woff/fonts/ - /assetssvg - woff部分存在差异。所有由启用JavaScript的测试(Poltergeist/PhantomJS驱动程序)生成的错误。常规水豚测试都是绿色的。Chrome devtools说字体文件的请求是由jquery.js生成的,而不是页面或css文件。

这与bootstrap-sass gem有关。我使用的是3.3.4.1版本和Rails 4.2。

我所呈现的问题非常相似,但略有不同:/fonts/bootstrap/glyphicons-halflings-regular.woff的404在CI中是相同的错误,但在dev中/fonts/glyphicons...的路径不同。

对我有效的解决方案是在包括带SASS的bootstrap JS之前添加以下行:

$icon-font-path: "bootstrap/";
@import 'bootstrap';

我最好的线索来自gem的跟踪器中关于这个问题的评论:https://github.com/twbs/bootstrap-sass/issues/480 issuecomment - 49237119

如果你和我们有类似的设置,你需要在Rails上手动安装Bootstrap,并且必须手动进行一些CSS样式覆盖以将Glyphicon字体指向正确的路径。(/资产/botostrap……而不是/fonts/bootstrap…)。然而,原来的样式仍然存在于bootstrap.css中,尽管它们被覆盖了,但似乎不知怎的,PhantomJS仍然在检测和利用那些原来的样式。

在我们的例子中,我们必须搜索bootstrap.css中所有对glyphicon -halflings的引用,并将路径更改为正确的路径。在我们这样做之后,路由错误就消失了。

祝你好运!