如何修复导致jQuery无法在IE中正确加载的JavaScript错误?

时间:2019-06-25 00:23:49

标签: javascript jquery angularjs gulp bower

我正在调试一个问题,该问题最近影响了我们的构建并破坏了与Internet Explorer浏览器的兼容性。我们已经有几个月没有更改JavaScript代码库了,但是在最近部署之后,似乎jQuery的“ $”已停止在IE中工作,从而完全破坏了该浏览器的页面。大多数对“ $”的函数调用都会返回某种形式的“对象不支持属性或方法'x'”,并且在大多数情况下,似乎为“ $”变量分配了错误的对象。

jQuery的问题只是最潜在的症状,如果我从遇到的每个错误中剔除jQuery的“ $”,最终我会在其他变量中发现类似的问题。但是同样,我们的代码库没有改变,只有我们的构建日期。

我试图寻找简单的东西,例如缺少分号或类似的错误。我在其他一些线程上读到,另一个问题可能是页面上的元素ID冲突,但事实并非如此。我曾尝试将代码库还原到几个月前,也没有任何乐趣。我已经考虑过基础架构和网络,但是它发生在内部网络内部和外部的客户端计算机和开发计算机上。

对我而言,最后一件有意义的事情是,自从上周五停止工作以来,对其中一个依赖项进行了一些更新,例如,当部署发生时,依赖项得到了更新并更改了构建中的最终工件。我的直觉说可能是Babel,但我不知道如何确认它,因为我对Bower或Angular的证明方式不够熟悉。

我的工作理论是,可能Babel更新了,或者是其他原因导致最近版本中断(也许babel-helper-evaluate-path?),因为我的研究似乎表明这是JavaScript的编译器,因此它运行类似在多个平台上。

 "devDependencies": {
    "babel-core": "6.26.3",
    "babel-helper-evaluate-path": "^0.5.0",
    "babel-preset-env": "1.7.0",
    "babel-preset-minify": "^0.5.0",
    "browser-sync": "^2.11.0",
    "del": "^1.2.0",
    "es6-promise": "^3.1.2",
    "express": "^4.13.4",
    "gulp": "^3.8.10",
    "gulp-angular-htmlify": "^0.4.0",
    "gulp-angular-templatecache": "^1.7.0",
    "gulp-babel": "7.0.1",
    "gulp-changed": "^1.1.0",
    "gulp-compass": "2.0.4",
    "gulp-concat": "^2.4.1",
    "gulp-css-flip": "^0.4.0",
    "gulp-cssnano": "^2.1.0",
    "gulp-expect-file": "0.0.7",
    "gulp-filter": "^2.0.2",
    "gulp-html-prettify": "0.0.1",
    "gulp-if": "^1.2.5",
    "gulp-ignore": "^1.2.1",
    "gulp-inject": "^1.3.1",
    "gulp-jshint": "^1.11.0",
    "gulp-jsvalidate": "^2.0.0",
    "gulp-less": "^1.3.9",
    "gulp-livereload": "^2.1.1",
    "gulp-load-plugins": "^0.10.0",
    "gulp-ng-annotate": "^2.0.0",
    "gulp-rename": "^1.2.0",
    "gulp-rtlcss": "^0.1.4",
    "gulp-sass": "^2.3.2",
    "gulp-sourcemaps": "^1.3.0",
    "gulp-sync": "^0.1.4",
    "gulp-uglify": "1.5.1",
    "gulp-util": "^3.0.1",
    "jshint-stylish": "^2.0.0",
    "less": "^1.7.5",
    "lodash": "^4.6.1",
    "lodash._basecreate": "^3.0.3",
    "lodash.isobject": "^3.0.2",
    "marked": "^0.3.2",
    "phantomjs-prebuilt": "^2.1.4",
    "rimraf": "2.2.8",
    "through2": "^0.6.3",
    "yargs": "^3.7.2"
  },

初始错误出现在此行:

    var now = $.now(),
        promise;

在IE运行时中,“ $。now()”的调用中断了,因为“ $”内部没有jQuery引用。

1 个答案:

答案 0 :(得分:0)

从此处开始查看polyfills.ts并相应地取消注释:

    /**************** BROWSER POLYFILLS*****************/

/** IE9, IE10 and IE11 requires all of the following polyfills. **/