【问题标题】:YUI compressor: Found an undeclared symbolYUI 压缩器:发现一个未声明的符号
【发布时间】:2010-08-06 23:15:03
【问题描述】:

我有一组 Javascript 文件,它们共同构成一个系统。系统的不同部分位于不同的(全局)命名空间(例如 NSA、NSB 等)中,这些命名空间可能是对象,例如

 NSA = { 
    ... lots of stuff ...
 }

现在,在我的各个模块中,我可能有如下代码:

NSA.method();

我的代码 JSLints 很干净,因为我在文件顶部的注释中声明了这些命名空间对象:

/*global dNSA NSB NSC */

当我使用 -v(详细)开关在这些文件上运行 YUI Compressor (v 2.4.2) 时,它会发出有关引用的命名空间对象的警告,例如:

Found an undeclared symbol: $

那是为 jQuery 使用 $!

我可以做些什么来定义这些变量,以便 YUI Compressor 不会发出警告,但我添加的任何内容都不会导致对象发生变化。

【问题讨论】:

  • 啊-似乎这是尚未提供的所需功能。存在票证:yuilibrary.com/projects/builder/ticket/21
  • 我也面临同样的问题。
  • 确保您使用的是最新的问题。在更改到版本 1.3.1.2 之前,我遇到了这个问题

标签: javascript yui-compressor


【解决方案1】:

YUI 库无法识别 Jquery,因此它“认为”这是一个错误。好像没什么好担心的。

【讨论】:

  • 这不是 jQuery 的特定问题,而是我在加载到同一个应用程序的不同文件中使用的任何全局值。 JSLint 提供了一种机制来告诉它一些全局定义在当前文件之外。我希望 YUIC 能提供类似的功能。
【解决方案2】:

添加

var $ = window.$;

到您的代码。

【讨论】:

  • 我试过这个,但可惜它会在 IE 下导致严重失败,它不会保留 $ 的值。我无法想象为什么不。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多