【问题标题】:ExecJS::ProgramError: Unexpected character '#' when trying to precompile assets for productionExecJS::ProgramError:尝试为生产预编译资产时出现意外字符“#”
【发布时间】:2014-08-15 21:11:21
【问题描述】:

我正在尝试使用以下命令 RAILS_ENV=production bundle exec rake assets:precompile 为 Rails 4.1.1 应用程序编译资产,但是当 rails 尝试编译资产时,它给了我一个错误。

错误如下所示,

$ RAILS_ENV=production bundle exec rake assets:precompile
rake aborted!
ExecJS::ProgramError: Unexpected character '#' (line: 13079, col: 0, pos: 361024)

Error
    at new JS_Parse_Error (<eval>:2357:10623)
    at js_error (<eval>:2357:10842)
    at parse_error (<eval>:2357:12560)
    at Object.next_token [as input] (<eval>:2357:17582)
    at next (<eval>:2357:18881)
    at semicolon (<eval>:2357:19726)
    at simple_statement (<eval>:2357:22538)
    at <eval>:2357:20689
    at <eval>:2357:19938
    at <eval>:2357:31926
    at Object.parse (<eval>:2358:98)
  (in /opt/rails/crj.com/app/assets/javascripts/application.js)/home/capin/.gem/ruby/2.1.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:61:in `block (3 levels) in define'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:60:in `block (2 levels) in define'
V8::Error: Unexpected character '#'
at js_error (<eval>:2357:10842)
at parse_error (<eval>:2357:12560)
at next_token (<eval>:2357:17582)
at next (<eval>:2357:18881)
at semicolon (<eval>:2357:19726)
at simple_statement (<eval>:2357:22538)
at <eval>:2357:20689
at <eval>:2357:19938
at <eval>:2357:31926
at parse (<eval>:2358:98)
at <eval>:19:24
at <eval>:53:3
/home/capin/.gem/ruby/2.1.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:61:in `block (3 levels) in define'
/home/capin/.gem/ruby/2.1.0/gems/sprockets-rails-2.1.3/lib/sprockets/rails/task.rb:60:in `block (2 levels) in define'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

我尝试使用--trace 开关/选项运行上面提到的命令,但对于导致此错误的原因有点无能为力。可以在此处查看该项目的全部内容 => https://github.com/ipatch/crj.com

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-4 asset-pipeline


    【解决方案1】:

    demo.js 是一个 JavaScript 文件,但使用的是 CoffeeScript cmets (#) 而不是 JavaScript cmets (//)。

    【讨论】:

    • 不确定到底修复了什么,但我删除了几个 gem,即execjs gem,并重新安装了 twitter bootstrap gem,现在我的资产正在编译。
    • 这个答案帮助我解决了同样的问题。谢谢!
    【解决方案2】:

    这很可能是因为 Rails 自动为您生成了一个空的 coffescript 文件,作为您在项目中生成控制器的一部分。您也可能将 coffescript 重命名为 .js

    在空的 js 文件中,您会发现为 coffescript 自动生成的 cmets,它以 # 而不是 JavaScript 使用的 // 开头。只需删除所有 cmets 即可。

    编辑

    由于在示例的第 13079 行发现了意外的“#”字符,因此您会在同一行找到您的 cmets。

    【讨论】:

      【解决方案3】:

      请删除任何 .js 文件中以“#”开头的注释行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-14
        • 2013-05-08
        相关资源
        最近更新 更多