Как исправить ошибку JavaScript, в результате чего jQuery не загружается должным образом в IE? - PullRequest
0 голосов
/ 25 июня 2019

Я отлаживаю проблему, которая недавно затронула нашу сборку и нарушила совместимость с браузерами Internet Explorer.Мы не меняли нашу кодовую базу JavaScript в течение нескольких месяцев, но после недавнего развертывания кажется, что jQuery "$" перестал работать в IE, полностью разрушив страницу для этого браузера.Большинство вызовов функций для «$» возвращают некоторую форму «Объект не поддерживает свойство или метод« x »», и кажется, что переменной «$» в большинстве случаев назначали неправильный объект.

jQuery'sпроблема является лишь самым скрытым симптомом: если я буду высовывать jQuery «$» из каждой ошибки, с которой я столкнусь, я в конечном итоге найду аналогичные проблемы с другими переменными.Но опять же, наша кодовая база не изменилась, только наша дата сборки.

Я пытался искать простые вещи, такие как пропущенные точки с запятой или подобные ошибки.И я читал в некоторых других темах, что другой проблемой могут быть конфликтующие идентификаторы элементов на странице, но, похоже, это тоже не так.Я пытался вернуть кодовую базу назад пару месяцев назад, но тоже не радуюсь.Я рассмотрел инфраструктуру и сеть, но это происходит на клиентских машинах и машинах разработки, как внутри, так и вне нашей внутренней сети.

Последнее, что имеет смысл для меня, так как он перестал работать примерно в прошлую пятницу,это некоторое обновление одной из зависимостей, например, когда развертывание произошло, зависимость была обновлена ​​и изменила конечный артефакт в сборке.Моя догадка говорит, что это может быть Вавилон, но я не знаю, как я могу это подтвердить, так как я недостаточно знаком с Бауэром или тем, как Angular строит это, чтобы доказать это.

Моя рабочая теория заключается в том, что, возможно,Обновление Babel или что-то еще недавно привело к сбою сборки (может быть, babel-helper -valu-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;

Когда вызов "$ .now ()" прерван, так как внутри "$" нет ссылки на jQueryIE время выполнения.

1 Ответ

0 голосов
/ 25 июня 2019

Взгляните на ваши polyfills.ts и раскомментируйте их, начиная с этой страницы:

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

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