bundle exec rake assets:precompile fails with `unexpected token`

后端 未结 3 1955
孤街浪徒
孤街浪徒 2020-12-10 14:07

I\'m ready to deploy my Rails 3.1 app into production, and since I\'m using the asset pipeline, I need to precompile my assets. However, when I try this, I get an error app

相关标签:
3条回答
  • 2020-12-10 14:46

    Here's how I debugged this.

    Locally, run this

    RAILS_ENV=production bundle exec rake assets:precompile

    Try to find out where it chokes (the script right before the choking is the file you'll want to look at). Look at all the requires.

    In my case, I had a file that ended in .js when it should've been .jsx and that's what fixed it.

    0 讨论(0)
  • I had this exact same problem and solved it, here are the details:

    When you include one or more javascript files in your Rails 3.1 environment using application.js and //= require ..., Rails will wrap the contents of your file with a <script> ..filecontents.. </script>. You can verify this by running your site in development mode and doing a View | Source.

    The problem is, in development mode, if you are not actually using that script, it may appear to work fine. But, Essentially, what you have is <script><script> ..filecontents.. </script></script>.

    However, when you attempt to PRECOMPILE the assets, something in that compiling process (sorry - I do not know what exactly) gags on the "<" in the inner script token.

    Double-check your included .js files and, if any of them are wrapped by <script> ... </script> remove those surrounding tags.

    You should see that, in Development, everything still looks fine if you View Page Source. And, when you precompile your assets, the error should go away.

    I ran into this problem with Google's recommended google-analytics javascript snippet and removing the script wrapper from the included file solved the problem.

    0 讨论(0)
  • 2020-12-10 14:55

    I had the very same problem.

    Even though I did not have a <script> tag in my javascript files, Dave's suggestion helped me a lot!

    I was able to spot a comment on a external lib I was loading in my application.js:

    <!-- Hotjar Tracking Code for (...) ->

    That single comment was breaking my uglifier compression and it took me a long time to find it and even possibly think it was the culprit.

    So, also watch out for comments in the begining of JS files, as the might break your compression.

    0 讨论(0)
提交回复
热议问题