仅限生产中的Javascript错误

时间:2015-07-08 23:12:10

标签: javascript google-chrome debugging firebug

我无法识别仅在生产中发生的javascript错误。错误是:

Uncaught TypeError: (intermediate value)(...) is not a function

指向文件中的第22182行的链接:https://d2wvl99qs6f2ce.cloudfront.net/js/358ee32eac3992e61f9fa13a0c55203d.js

点击该链接,Chrome调试器会在以下行显示错误:

 (function(jQuery){

以下是本行的一些例外情况:

/*
 * jQuery SelectBox Styler v1.0.1
 * http://dimox.name/styling-select-boxes-using-jquery-css/
 *
 * Copyright 2012 Dimox (http://dimox.name/)
 * Released under the MIT license.
 *
 * Date: 2012.10.07
 *
 */

(function($) {
    $.fn.selectbox = function(options) {
         ...
    }
})(jQuery)
/* jquery.nicescroll
-- version 3.5.0 BETA5
-- copyright 2011-12-13 InuYaksa*2013
-- licensed under the MIT
--
-- http://areaaperta.com/nicescroll
-- https://github.com/inuyaksa/jquery.nicescroll
--
*/
(function(jQuery){
     ...          
})( jQuery );

查看代码和错误,似乎我应该更改行:

})(jQuery)

})(jQuery);

这一变化与我的研究结果一致,即此错误通常是由缺少的分号引起的。但是,在检查我的开发环境中使用的代码时,相同的代码(没有分号)不会产生任何错误。我已经尝试在错误之前设置断点,因此我可以暂停执行,添加分号,然后继续执行,但这并没有提供足够的信息(可能我没有错误地使用调试工具)。 ..)

我挣扎是因为:

  1. 我的开发和生产环境中的代码是相同的(通过github比较检查)。

  2. 我无法在我的开发环境中复制错误,这限制了我的调试能力。

  3. 文件https://d2wvl99qs6f2ce.cloudfront.net/js/358ee32eac3992e61f9fa13a0c55203d.js是我应用程序开头的js文件的汇编。但是,为什么Chrome会从云端服务呢?

  4. 我有什么方法可以开始确定问题的根源?有没有办法可以修改Chrome开发者工具或Firefox的Firebug中的代码来添加分号和继续执行?我甚至尝试将javascript粘贴到JSfiddle中,但是这打破了小提琴(文件太长而无法粘贴)。如果它有任何区别,我建立一个Magento 1.9应用程序......

1 个答案:

答案 0 :(得分:2)

原来答案与Magento有关。在Magento的管理后端,有一个合并所有javascript错误的选项(管理员 - >系统 - >配置 - >在高级选项卡下,点击开发人员 - > Javascript设置 - >合并Javascript文件)。合并Javascript文件时,合并之前通常被忽略的所有javascript错误(例如某些地方缺少分号)会触发错误。就我而言,javascript文件正在生产中合并(出于性能原因),但在开发环境中却没有。

就我而言,生产环境正在合并javascript文件,而开发环境却没有。由于我在上面的文件中注意到了一个缺少的分号(参见问题),生产中的代码在开发中的代码工作时失败了。