【问题标题】:Rails coffeescript + backbone syntax errorRails coffeescript +主干语法错误
【发布时间】:2014-08-28 01:25:27
【问题描述】:

我得到以下路由器代码:

class App.Routers.MainRouter extends Backbone.Router
  routes:
    '': 'index'
  index: ->
    console.log "whatever"

Rails 出现以下错误

ActionView::Template::Error ([stdin]:1:84: error: unexpected :
    console.log "whatever"er extends Backbone.Router
                                                                                   ^
  (in /Users/ivan/projects/ruby/backbone-example/app/assets/javascripts/backbone/routers/main_router.js.coffee)):
    15:     = favicon_link_tag 'apple-touch-icon-72x72-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '72x72'
    16:     = favicon_link_tag 'apple-touch-icon-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png'
    17:     = favicon_link_tag 'favicon.ico', :rel => 'shortcut icon'
    18:     = javascript_include_tag "application"
    19:
    20:
    21:   %body
  app/views/layouts/application.html.haml:18:in `_app_views_layouts_application_html_haml___4072892406181986467_2205219860'

execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:47:in `rescue in block in call'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:43:in `block in call'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:78:in `block in lock'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:76:in `call'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:76:in `Locker'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:76:in `lock'
execjs (2.2.1) lib/execjs/ruby_racer_runtime.rb:42:in `call'
coffee-script (2.2.0) lib/coffee_script.rb:57:in `compile'

想不通到底出了什么问题?

therubyracer (0.12.1)
libv8 (~> 3.16.14.0)

宝石文件:

source 'https://rubygems.org'
gem 'rails', '4.1.4'
gem 'pg'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'therubyracer',  platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development
gem 'rails-backbone', github: 'codebrew/backbone-rails', branch: 'master'
gem 'twitter-bootstrap-rails'
gem 'haml-rails'

应用程序.js

//= require jquery
//= require twitter/bootstrap
//= require underscore
//= require backbone
//= require backbone/backbone_example

backbone_example.js.coffee

#= require_self
#= require_tree ./templates
#= require_tree ./models
#= require_tree ./views
#= require_tree ./routers

    window.App =
      Models: {}
      Collections: {}
      Routers: {}
      Views: {}
      initialize: ->
        new App.Routers.MainRouter()
        Backbone.history.start()

如果我删除这两行 路线: '': '指数' coffeescript 编译成功,所以问题就在那里。 另一个奇怪的事情是,如果我将此文件复制并粘贴到 js2coffee.org,它也会成功编译。

【问题讨论】:

  • 您可以在 app/views/layouts/application.html.haml 中特别是在第 18 行附近发布您的代码吗?
  • 您是否尝试过将您的路由声明更改为路由:'/': 'index'

标签: ruby-on-rails ruby backbone.js syntax coffeescript


【解决方案1】:

我看到的第一件事是您拼错了 extends 关键字:

class App.Routers.MainRouter exetends Backbone.Router

应该是extends:

class App.Routers.MainRouter extends Backbone.Router

【讨论】:

  • 是的,对不起,这只是我的问题中的情况,而不是代码本身,所以问题仍然存在。
  • 你能提供完整的堆栈跟踪吗?
  • 刚刚用 rails 日志中的完整堆栈跟踪更新了我的问题
  • 您的 v8 运行时版本是多少?
【解决方案2】:

您的代码中可能有一些杂散的回车 (CR - \r) 字符,或编辑器未显示的其他 ASCII 字符。

【讨论】:

  • 你是对的。我试图通过骨干学习vim,显然它在我的代码中添加了一些奇怪的符号。我在 Sublime 中删除并创建了文件,一切正常,很奇怪。
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多