rake assets: прекомпиляция не работает (rails 3.1.1) - PullRequest
7 голосов
/ 21 октября 2011

Я развертываюсь на heroku, но я видел, что файлы css не обслуживаются (их также нельзя найти на heroku).

Я прочитал, что мне нужно сделать рейк-ресурсы: сначала прекомпилировать локально, но когда я это делаю, я получаю:

C:\project>bundle exec rake assets:precompile --trace

** Invoke assets:precompile (first_time)
** Execute assets:precompile
rake aborted!
undefined: Unexpected token: operator (<)
  (in C:/project/app/assets/javascripts/application.js)

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

У меня ничего нет в application.js, поэтому я не понимаю, где ошибка ..

application.js - это

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

Спасибо

Обновление

При удалении файла .js.erb я получаю следующую ошибку

C:\project>bundle exec rake assets:precompile RAILS_ENV=production --trace
** Invoke assets:precompile (first_time)
** Execute assets:precompile
rake aborted!
706: unexpected token at 'C:\Users\me\AppData\Local\Temp\execjs20111021-6448-ei2nm3.js(2, 3) Microsoft JScript runtime error: Out of memory

'
  (in C:/project/app/assets/javascripts/application.js)

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

По-прежнему возникают проблемы с файлами erb css и js, которые не компилируются ...

Кажется, это не конец. Спасибо

Ответы [ 7 ]

5 голосов
/ 28 сентября 2012

У меня здесь такая же проблема! В моем случае причиной этой проблемы является то, что я добавляю новый файл JS в папку javascript и получаю ошибку undefined: Unexpected token: operator (<) при попытке выполнить команду прекомпиляции. Поэтому я заглянул в новый файл js и обнаружил, что в этом файле есть комментарий в стиле HTML <!-- -->. Я удаляю это, и жизнь теперь хорошо!

Поэтому постарайтесь выяснить, есть ли в вашем файле js комментарий в стиле HTML <!-- -->, и просто удалите эти комментарии. Это особенно верно, когда некоторый код JS копируется из файла html!

5 голосов
/ 23 ноября 2011

Я боролся с этим, пытаясь развернуть на промежуточный сервер. Решение, которое работает для меня, состоит в том, чтобы убедиться, что в вашем файле config/environments/[your_environment].rb есть следующее:

config.assets.compress = false

По умолчанию компрессоры недоступны в среде, отличной от рабочей, поэтому прекомпиляция не удалась.

3 голосов
/ 11 марта 2013

У меня возникла та же проблема, и это, как оказалось, было вызвано включением JavaScript-кода для встраивания, который имел комментарии в формате: <!-- comment --> Я удалил их, и это сработало как шарм!Надеюсь, это поможет.

3 голосов
/ 14 марта 2012

Я думаю, что это вызвано внешним файлом javascript, который плохо отформатирован.например,

function say_hi(){
  // NOTICE that there's no semi-colon there!
  name = "Jim"
  alert("hi" + name )
}

при прекомпиляции ваш код будет помещен в 1 строку, а поскольку нет необходимой точки с запятой, ваш сгенерированный js-файл, вероятно, содержит ошибки, такие как

"undefined: Unexpected token: operator (<)" 

или что-то в этом роде.

поэтому я предлагаю следующее:

  1. не сжимайте файл js, если он недостаточно хорошо отформатирован, установив config.assets.compress = falsemsgstr "в вашем конфигурационном файле после ответа @ Mike.

  2. по возможности используйте coffeescript, это поможет вам генерировать очень хорошо отформатированный код.(Я не гуру-кофейник, поэтому поправьте меня, если я ошибаюсь)

1 голос
/ 26 марта 2012

Я провел последние 1 час, почесывая голову после того, как столкнулся с той же ошибкой. Проблема заключается в следующей строке в вашем application.js:

//= require_tree .

Это приводит к включению всех файлов в вашем каталоге app/assets/javascripts/, и может быть причиной того, что в другом файле в каталоге есть какая-то ошибка. Я удалил эту строку и получил мои ресурсы для предварительной компиляции (я на самом деле не использовал application.js). Итак, ищите ошибку в файле, включаемом application.js

1 голос
/ 14 ноября 2011

Одна вещь, которую я заметил, это то, что она должна быть:

RAILS_ENV=production bundle exec rake assets:precompile

определение RAILS_ENV должно идти перед командой bundle, потому что она устанавливает переменную среды оболочки (bash) для оболочкикоторый выполняет команду bundle.

Ваши проблемы, кажется, связаны с этим:

https://github.com/bradphelan/jasminerice/issues/21

См. также:

http://guides.rubyonrails.org/asset_pipeline.html

Приложение Heroku rails 3.1 - локальная компиляция ресурсов против компиляции ресурсов во время компиляции слагов

Ошибка компиляции ресурса Rails 3 CSS на Heroku

0 голосов
/ 29 января 2013

У меня была похожая проблема:

Неожиданный токен: operator (<<) </p>

Оказалось, что это оставшийся файл из конфликта слияния в Git,Конфликт оставляет файл .orig, который содержит «<<<<<<<<<<» везде, где Git находит блок кода для объединения.</p>

Из-за директивы конвейера активов

// = require_tree.

в application.js , все файлы в папке javascript (включая файлы .orig) предварительно компилируются на серверах наподобие Heroku.Прекомпилятор находит ошибку с «<<<<<». </p>

Поэтому мое решение состояло в том, чтобы найти все файлы .orig и удалить их из Git, используя метод «git rm filename».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...