【问题标题】:Javascript error in production only仅生产中的 Javascript 错误
【发布时间】:2015-07-13 07:48:30
【问题描述】:

我无法识别仅在生产中发生的 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 从云端提供服务?

我可以通过哪些方法开始确定问题的根源?有没有办法可以修改 Chrome 开发人员工具或 Firefox 的 Firebug 中的代码以添加分号并继续执行?我什至尝试将 javascript 粘贴到 JSfiddle 中,但这破坏了小提琴(文件太长而无法粘贴)。如果有什么不同,我正在构建一个 Magento 1.9 应用程序...

【问题讨论】:

  • 您的观点 3. 由于我们根本看不到您的申请,您如何期望得到答案。你认得这个文件吗?
  • #3 中引用的文件由我的应用程序头部的 js 文件组成。我只是不知道为什么它会在云端提供。希望有人能对这个话题有所了解。

标签: javascript google-chrome debugging firebug


【解决方案1】:

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

在我的例子中,生产环境正在合并 javascript 文件,而开发环境没有。由于我在上面的文件中注意到缺少分号(请参阅问题),因此生产中的代码在开发中的代码工作时失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2020-08-28
    • 1970-01-01
    • 2019-08-21
    • 2013-09-04
    • 2013-09-13
    • 2014-01-31
    相关资源
    最近更新 更多