8

我有一个 Rails 应用程序收到以下错误:

Less::ParseError in Home#index

Showing /Users/burtondav/sites/requestsys/app/views/layouts/application.html.erb where line #20 raised:

Cannot call method 'charAt' of undefined
  (in /Users/burtondav/sites/requestsys/app/assets/stylesheets/bootstrap_and_overrides.css.less)
Extracted source (around line #20):

17:       }
18:   </style>
19: 
20:   <%= stylesheet_link_tag "application", :media => "all" %>

我正在使用的一些 GEMS:

gem 'rails', '3.2.11'
gem 'twitter-bootstrap-rails'
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'less-rails'
  gem 'commonjs'
  gem 'therubyracer', :platforms => :ruby
  gem 'uglifier', '>= 1.0.3'

end

Bootstrap 使用的 LESS 似乎有问题。

我已经阅读了其他几个类似的问题。所以,我将 Ruby 升级到 1.9.3p374。但是,这并没有解决问题。

有任何想法吗?

谢谢!

更新

这是 bootstrap_and_overrides.css.less

@import "twitter/bootstrap/bootstrap";
@import "twitter/bootstrap/responsive";

// Set the correct sprite paths
@iconSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings");
@iconWhiteSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings-white");
4

4 回答 4

4

我已经临时解决了这个问题。mixins.less 有一个语法更改,似乎只有 LESS.js 支持

举个例子:

2.3 后版本:

.offsetX (@index) when (@index > 0) {
  .offset@{index} { .offset(@index); }
  .offset@{index}:first-child { .offsetFirstChild(@index); }
  .offsetX(@index - 1);
}

2.3 之前的版本

.offsetX (@index) when (@index > 0) {
  (~'.offset@{index}') { .offset(@index); }
  (~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
  .offsetX(@index - 1);
}

将 (~"") 添加到它被删除的所有位置后(您必须查看 2.3 的差异和之前的版本才能看到它被删除的位置,我的所有资产再次编译没有错误并且仍然使用 LESS。

顺便说一句,这种变化仅在 mixins.less 中,总共只有 5 或 6 行。

于 2013-02-15T16:40:07.250 回答
3

遇到了同样的失败。通过将 twitter-bootstrap-rails 回滚到版本来修复它2.1.4(在撰写本文时,最新的是2.2.4

# Gemfile
...

group :assets do
  ...

  gem "therubyracer"
  gem "less-rails"
end

gem "twitter-bootstrap-rails", '2.1.4'
于 2013-02-19T11:31:49.567 回答
1

在评论中与您联系后。似乎答案在于使用 twitter-bootstrap-rails 或 less-rails 打开一个 github 问题来描述您的问题。您还可以关注原始问题:https ://github.com/seyhunak/twitter-bootstrap-rails/issues/72

否则,我们会为您提供两种解决方案:

  1. 使用 SASS 版本:https ://github.com/jlong​​/sass-twitter-bootstrap
  2. 使用他们网站上可用的原生 css 版本:http: //twitter.github.com/bootstrap/customize.html
于 2013-02-03T19:48:04.420 回答
0

我以一种迂回的方式解决了这个问题,所以 YMMV。在我的情况下,这个错误是由于将 twitter-bootstrap-rails 从 2.1.6 更新到 2.2.5 引起的,没有对任何文件进行任何编辑。所以试图在开发中重现这一点,我注意到请求半身人图标的 404:

ActionController::RoutingError (No route matches [GET] "/assets/twitter/bootstrap/glyphicons-halflings"):

由于我使用的是 font-awesome,我只是从我的 CSS 中删除了对这些精灵的所有引用:

# bootstrap_and_override.less
//@iconSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings");
//@iconWhiteSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings-white");
// Glyphicons
//@import "twitter/bootstrap/sprites.less";

这反过来导致了这个错误:

variable @fontAwesomeEotPath_iefix is undefined

这是一个常见的升级问题,并通过添加以下行来解决:

@fontAwesomeEotPath_iefix: asset-path("fontawesome-webfont.eot#iefix"); 

之后,一切都恢复正常。

于 2013-03-05T10:37:24.957 回答