代码之家  ›  专栏  ›  技术社区  ›  ipatch

ExecJS::ProgramError:尝试为生产预编译资产时出现意外字符“#”

  •  6
  • ipatch  · 技术社区  · 10 年前

    我正在尝试使用以下命令为Rails 4.1.1应用程序编译资产 RAILS_ENV=production bundle exec rake assets:precompile 但当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 switch/选项,但我有点不知道是什么导致了这个错误。可以在此处查看项目的完整性=> https://github.com/ipatch/crj.com

    3 回复  |  直到 10 年前
        1
  •  14
  •   Jay Mitchell    10 年前

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

        2
  •  5
  •   moeabdol    9 年前

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

    在空的js文件中,您可以找到自动生成的coffectpt注释,该注释以#开头,而不是javascript使用的//。只要删除所有评论,就可以开始了。

    编辑

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

        3
  •  0
  •   errakeshpd    8 年前

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