【问题标题】:Rails application.js error on Production: Uncaught SyntaxError: Unexpected number生产上的 Rails application.js 错误:未捕获的 SyntaxError:意外的数字
【发布时间】:2014-03-05 11:15:32
【问题描述】:

我从 application.js 文件的第 1 行收到此错误:

Uncaught SyntaxError: Unexpected number   application-b975feabda9124d54cd2e23989649e07.js:1

错误来自 jquery 评论部分中的“2”:

2
 * http://jquery.com/
 *
 * Copyright 2011, John Resig

工作时是这样的:

/*!
 * jQuery JavaScript Library v1.7.2
 * http://jquery.com/
 *
 * Copyright 2011, John Resig

我的开发环境中没有错误。只有在推送到 Heroku 并编译 application.js 之后。

更新

我已经搜索了 assets/javascripts 中的所有 js 文件,但找不到与问题相关的 2。我怀疑它与 jquery-rails gem 有关,因为当我将 gem 降级(作为测试)到 2.0.1 时,2 变成了 1。

感谢任何和所有想法!

【问题讨论】:

  • 您尝试删除 2 吗?
  • 在我看来,您的开发 js 文件夹中有一个文件,其中包含“2”,它被连接到您的生产 javascript 文件中。无论如何,您的生产和开发 javascript 文件显然是不同的。尝试重新编译生产文件。
  • 我已经搜索了所有的 js 文件,但找不到与问题相关的 2。我怀疑它与 jquery-rails gem 有关,因为当我将 gem 降级到 2.0.1 时,2 变成了 1。有什么想法吗?
  • 我可以确认这也发生在我身上。一些资产文件将在文件顶部插入“HTTP/1.1 500 内部服务器错误”:d2dnzw0oqnl06s.cloudfront.net/assets/…。这在我的代码中没有,似乎是在 Heroku 的资产编译中插入的。我不知道是怎么回事。有什么帮助吗?
  • 我的问题是由 Rails 缓存静态资产和云端缓存部分资产代码的错误引起的。 jackchu.com/2011/09/20/…

标签: jquery ruby-on-rails heroku ruby-on-rails-3.2 asset-pipeline


【解决方案1】:

请按以下步骤操作

a) 检查所有包含的 Java Script 文件,

  • 您可能在任何JS文件中错误地添加了2,如果是这种情况,请检查并删除它。

  • 检查评论的开始和结束标签,如果是,请更正。

b) 如果上述任何一种情况都适用,则提交更新并将更新推送到 heroku 并检查。

c) 如果不是这样,请尝试通过编译资产在本地生产环境中运行应用程序并查看它是否仍然存在。也请分享 JS 文件,以便我们为您检查。

【讨论】:

    【解决方案2】:

    这个问题是由 Rails 缓存静态资产引起的。我可以通过防止静态资产被缓存来解决这个问题,如this article 中所述(感谢Ronze

    我将此添加到我的 application.rb 文件中:

    # config/application.rb
    require 'rack/cache'
    
    if !Rails.env.development? && !Rails.env.test?
      config.middleware.insert_before Rack::Cache, Rack::Static, urls: [config.assets.prefix],     root: 'public'
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2014-05-27
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多