Как сделать так, чтобы ошибки JS не мешали работе Trix? - PullRequest
4 голосов
/ 28 апреля 2020

Это связано с этим вопросом .

Я обнаружил, что есть какой-то файл JS, который выдает ошибку, которая, кажется, мешает правильному выполнению Trix (или в все).

Вот как выглядит мой app/javascript/packs/application.js:

// This file is automatically compiled by Webpack, along with any other files
// present in this directory. You're encouraged to place your actual application logic in
// a relevant structure within app/javascript and only use these pack files to reference
// that code so it'll be compiled.

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("local-time").start()

window.Rails = Rails

import '../src/popper.min'
import '../src/jquery.min'
import 'bootstrap'

import '../src/aos'
// import '../src/clipboard.min'
// import '../src/jquery.fancybox.min'
// import '../src/flatpickr.min'
// import '../src/flickity.pkgd.min'
// import '../src/ion.rangeSlider.min'
// import '../src/isotope.pkgd.min'
// import '../src/jarallax.min'
// import '../src/jarallax-video.min'
// import '../src/jarallax-element.min'
// import '../src/jquery.countdown.min'
// import '../src/jquery.smartWizard.min'
// import '../src/plyr.polyfilled.min'
// import '../src/prism'
// import '../src/scrollMonitor'
// import '../src/smooth-scroll.polyfills.min'
// import '../src/svg-injector.umd.production'
// import '../src/svg-injector'
// import '../src/twitterFetcher_min'
// import '../src/typed.min'
// import '../src/theme'

$(document).on("turbolinks:load", () => {
  $('[data-toggle="tooltip"]').tooltip()
  $('[data-toggle="popover"]').popover()
})

import "controllers"

require("trix")
require("@rails/actiontext")

Я попытался поместить вызовы require("trix") в верхней части этого файла, но он все еще не работает.

Учитывая все зависимости JS здесь, есть ли в любом случае, я могу убедиться, что файлы trix и actiontext выполняются независимо?

Ответы [ 4 ]

1 голос
/ 08 мая 2020

Попробуйте этот универсальный ответ: построчно комментируйте в файле *. js шаг за шагом

0 голосов
/ 07 мая 2020

Вы можете указать своему браузеру игнорировать Javascript ошибки, переписав функцию window.onerror. Обычно это делать не рекомендуется, так как это может вызвать непредвиденное поведение, и, как правило, лучше запускать код без ошибок. Обработка ошибок - это хорошо!

Как говорится, это предотвратит прекращение работы скрипта из-за ошибок.

function errorIgnorer() {
   return true;
}

window.onError = errorIgnorer;

Документы MDN говорят, что некоторые слушатели событий все равно будут срабатывать. Вероятно, вы сможете использовать аналогичный метод для устранения ошибок в этих случаях.

0 голосов
/ 07 мая 2020

Вы можете попробовать поместить не функциональный код внутри try-catch и поместить нужные файлы независимо от результата try-catch внутри finally {} блока

0 голосов
/ 02 мая 2020

Учитывая все зависимости JS здесь, есть ли в любом случае, я могу убедиться, что файлы trix и actiontext выполняются независимо?

Нет, все файлы должны работать без ошибка.

Конечно, вы можете обернуть их в блоки try catch, но это, вероятно, не сработает, если они понадобятся для обеспечения функциональности вашего приложения.

$ (документ) .on ("turbolinks: load", () => {$ ('[data-toggle = "tooltip"]'). Tooltip () $ ('[data -toggle = "popover"] '). popover ()})

Это все еще происходит, если вы удалите код выше? Это на самом деле не относится (см. Комментарий из веб-пакета вверху вашего кода)

...