Я разрабатываю приложение Laravel + vuejs. Я использую смесь Laravel для управления регистрацией компонентов и т. д. У меня есть несколько компонентов vue для различных частей моего приложения.
В одном из них у меня есть такая строчка, которая вызывает ошибку
this.map.on('dragend',function(){console.info('Dragend Event')})
Это вызывает эту ошибку:
bundle.js:53526 Uncaught TypeError: Cannot read property 'on' of null
Laravel mix не вызывает ошибки при сборке, эта ошибка появляется только во время выполнения
Теперь сама ошибка не такая уж большая проблема. Я могу исправить это, что меня беспокоит, так это то, что, поскольку Laravel mix связывает все компоненты вместе, это означает, что ни один компонент теперь не работает.
На каждой странице, которую я посещаю, есть одна и та же проблема. есть ли способ отделить компоненты.
Итак, если у меня возникнет сбой в компоненте, как мне убедиться, что он влияет только на страницу, на которой эти компоненты необходимы? а не весь сайт.
Я бы сказал, что так в целом работает javascript: ваш скрипт выдает ошибку и останавливает выполнение. Вот почему у вас обычно много нулевых проверок. Попробуйте Catch решить вашу конкретную ошибку - или вы просто проверяете сохранение в нескольких местах
@FrankProvost проблема не в ошибке, а в последствиях.
@thefallen, я думаю, это один из способов, я посмотрю, может ли микс создавать отдельные файлы для сгруппированных компонентов. так что я все еще могу загрузить основной связанный js
Вы можете сделать mix.js('file1').js('file2') и извлечь библиотеки поставщиков, такие как vue и jquery, в отдельный файл.
Я очень сомневаюсь, что это решит любую проблему. Разделение поставщика из ваших файлов все равно приведет к тому, что ваши скрипты перестанут работать, если вы реализуете ошибку. Это язык сценариев, который просто останавливается на ошибках, которых вы не поймаете. Либо поймайте их, либо убедитесь, что они не соответствуют. Показанную конкретную проблему так легко решить - просто убедитесь, что this.map существует, прежде чем назначать ему события.
@FrankProvost на самом деле не об ошибке, есть много вещей, которые мы могли бы сделать, чтобы предотвратить это и бесчисленное множество других ошибок, но если мы сделаем ошибку. мы могли удалить целый сайт. Так что защитное кодирование должно быть нормой, но я предпочитаю подход с поясом и подтяжками. Спасибо






Я бы посоветовал вам создать отдельный js-файл для каждой страницы, который содержит только компоненты для текущей страницы.