【问题标题】:Rails Asset Pipeline JS Compression Inserting "Illegal Characters"Rails Asset Pipeline JS 压缩插入“非法字符”
【发布时间】:2012-05-08 10:12:30
【问题描述】:

just asked a question 关于我的 javascript 中的“非法字符”。

那里的答案让我发现在Rails资产管道中压缩javascript插入各种非法字符存在问题。

我在帖子中收到的错误是:

SyntaxError: Invalid character '\u0008'

我发现不使用压缩会导致这种情况完全消失...但我想要压缩!该错误是使用 Rails 默认的 uglifer gem 发现的。我想这可能是那个特定压缩 gem 的错误,所以我尝试按照Rails docs 的指示使用其他压缩器。我得到了非常相似但不同的错误:

Uglifier: SyntaxError: Invalid character '\u0008'
Closure:  SyntaxError: Invalid character '\u0190'
YUI:      SyntaxError: Invalid character '\u0025'

我尝试查看这些的最小化代码,但由于“无效字符”每次都不同,这让我相信其他问题。

Here 是一个示例压缩 JS 文件。有人可以在这里指出我正确的方向吗?

【问题讨论】:

  • 我的直觉告诉我,客户端正试图像使用纯数据一样使用压缩数据。
  • 文件好像被gzip了两次。
  • @Rob,你能解释一下吗?看着cloudfront.giantuser.com/assets/…,好像只压缩过一次
  • @coneybeare 我注意到错误控制台中显示了“奇怪”字符。所以,我使用了wget http://cloudfront.giantuser.com/assets/application-37b1a9bb0cb78bb8680fcf0682eb769d.js.gzless <file_name> 显示了一组奇怪的字符,zless <file_name> 显示了预期的代码。所以,我相信响应被压缩了两次(由于Content-Encoding: gzip 标头而解压缩了一次)。
  • 不确定是否是问题所在。该页面只有一个 JS 文件,其他 JS 工作正常。这意味着 JS 在文件中途存在解释问题。我发现我的 Cufon 的东西不能正常工作......我会去那里看看

标签: javascript ruby-on-rails compression asset-pipeline ruby-on-rails-3.2


【解决方案1】:

似乎您在某些 JavaScript 正则表达式中使用了\b,我认为这是不受支持的。尝试将\b 替换为\u0008, E.x.

string.replace(/\u0008/g, '\\b')

【讨论】:

  • 没有线索。我以前见过这个错误,我提供的实现修复了它,但是,字符代码的结果显然变化很大。如果你弄明白了就回帖。
  • 此外,如果您将 Apache(或您正在使用的任何工具)设置为 gzip JS 文件,并且您的重写将指向双压缩文件。
  • 压缩、组合的 JS 托管在亚马逊上并且是未压缩的。查看我在 OP 中发布的示例文件
  • *ungzipped 最后一句话令人困惑
  • 原来问题出在 Cufon js 通过任何 JS 压缩器运行。一旦我切换到谷歌网络字体,然后压缩所有剩余的文件,它工作得很好。
猜你喜欢
  • 1970-01-01
  • 2011-12-01
  • 2015-06-11
  • 2014-04-29
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
相关资源
最近更新 更多