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

問題を一時的に修正しました。LESS.js でのみサポートされていると思われる mixins.less の構文変更があります。

例として:

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

それ以外の場合は、次の 2 つのソリューションが提供されます。

  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 に答える