4

与这个问题有关

我发现有一些 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 依赖项,无论如何我都可以确保trixactiontext文件得到执行吗?

4

4 回答 4

1

试试这个通用答案:在你的 *.js 文件中逐行注释

于 2020-05-07T21:55:30.680 回答
0

鉴于此处的所有 JS 依赖项,无论如何我都可以确保 trix 和 actiontext 文件得到执行吗?

不,所有文件都必须正常运行。

当然,您可以将它们包装在 try catch 块中,但如果您需要它们为您的应用程序提供功能,这可能行不通。

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

如果你删除上面的代码,它仍然会发生吗?那并不真正属于那里(请参阅代码顶部的 webpack 评论)

于 2020-05-02T16:59:01.390 回答
0

您可以通过覆盖该window.onerror函数来告诉您的浏览器忽略 Javascript 错误。通常不建议这样做,因为它可能会导致意外行为,并且通常最好让代码运行时没有错误。错误处理是件好事!

话虽如此,这将阻止错误导致您的脚本停止运行。

function errorIgnorer() {
   return true;
}

window.onError = errorIgnorer;

MDN 文档说某些事件侦听器仍然会触发,无论如何。在这些情况下,您也可以使用类似的方法来删除错误处理。

于 2020-05-07T02:19:09.803 回答
0

您可以尝试将非功能代码放在 try-catch 中,并将要执行的文件放在finally {}块中,而不管 try-catch 结果如何

于 2020-05-07T07:41:55.327 回答