Great JS client, and works really well.
One issue I’ve found is that when using it in the WP Editor area (as part of a JS-fuelled WordPress plugin using React), I get the following console errors:
load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:380 Uncaught TypeError: _.pluck is not a functiondetach @ load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:380render @ load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:380render @ load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:416init @ load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:417i @ jquery.js:1fireWith @ jquery.js:1ready @ jquery.js:1K @ jquery.js:1
load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:419 Uncaught TypeError: _.pluck is not a function
and
load-scripts.php?c=0&load[]=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery…:663 Uncaught TypeError: Cannot read property 'hasClass' of undefined
I’ve extensively tested and turned everything else off/on, and only when I remove the node-wpapi library from my webpack file (therefore not including it in my project) do the above errors stop.
Всем привет.
Столкнулся на одном сайте с невиданной ранее проблемой.
Версия ВП 5.5.3.
С включенным плагином Yoast SEO(текущая версия 15.2.1) в библиотеке медиа перестают отображаться медиа вообще, только заголовок страницы и всё. В консоли имеем ошибку
Uncaught TypeError: _.pluck is not a function
at wp.Backbone.Subviews.detach (wp-backbone.min.js?ver=5.5.3:2)
at i.render (wp-backbone.min.js?ver=5.5.3:2)
at initialize (media-grid.min.js?ver=5.5.3:2)
at i.h.View (backbone.min.js?ver=1.4.0:2)
at i.constructor (wp-backbone.min.js?ver=5.5.3:2)
at i.constructor (media-views.min.js?ver=5.5.3:2)
at i [as constructor] (backbone.min.js?ver=1.4.0:2)
at i [as constructor] (backbone.min.js?ver=1.4.0:2)
at new i (backbone.min.js?ver=1.4.0:2)
at Object.wp.media (media-models.min.js?ver=5.5.3:2)
Соответственно, с выключенным плагином проблем нет. Плагин не премиум.
Все доступные настройки перетыкал, результата никакого.
ВП переустанавливал.
Node.js — русскоговорящее сообщество
Node.js — русскоговорящее сообщество
Eugene
function, когда я уже давно поменял вызов pluck на map(i => i[«field»])
russian
programming
node.js
12:00 01.03.2018
1
ответов
Nikolay
Chursin
Что поменял, где поменял? Тут не общество телепатов.
12:01 01.03.2018
Похожие вопросы
Nikolay
Chursin
Что поменял, где поменял? Тут не общество телепатов.
12:01 01.03.2018
Похожие вопросы
Node.js — русскоговорящее сообщество
Dmitry
Kireev
Всем доброго утра. Подскажите пожалуйста, какой сейчас в TS самый правильный и современный способ выбрать объект из массива по значению его ключа? map? reduce? просто for loop…
russian
programming
node.js
16
сегодня в 07:25
Dmitry
Kireev
Всем доброго утра. Подскажите пожалуйста, какой сейчас в TS самый правильный и современный способ выбрать объект из массива по значению его ключа? map? reduce? просто for loop…
russian
programming
node.js
16
сегодня в 07:25
Node.js — русскоговорящее сообщество
Amwey
Может ли молекуляр быть на тс ? Есть ли решения из коробки?
russian
programming
node.js
9
сегодня в 14:25
Amwey
Может ли молекуляр быть на тс ? Есть ли решения из коробки?
russian
programming
node.js
9
сегодня в 14:25
Node.js — русскоговорящее сообщество
Daniil
OF
Господа, подскажите
У меня мак,который в ремонте
Сейчас работаю на винде и пытаясь скопировать гит репо, VSCode жалуется, что я не могу создать папку :id
Как быть?
russian
programming
node.js
9
сегодня в 15:55
Daniil
OF
Господа, подскажите
У меня мак,который в ремонте
Сейчас работаю на винде и пытаясь скопировать гит репо, VSCode жалуется, что я не могу создать папку :id
Как быть?
russian
programming
node.js
9
сегодня в 15:55
Node.js — русскоговорящее сообщество
Website
Developer
друзья помогите выбрать либу толковую, юзал pdf-creator-node , но она нищадно устарела и плюс не справляется с доками более 1000 страниц , то что нашел в нете убивают сервак н…
russian
programming
node.js
8
сегодня в 08:44
Website
Developer
друзья помогите выбрать либу толковую, юзал pdf-creator-node , но она нищадно устарела и плюс не справляется с доками более 1000 страниц , то что нашел в нете убивают сервак н…
russian
programming
node.js
8
сегодня в 08:44
Node.js — русскоговорящее сообщество
gercovv
gercovv
Подскажите с помощью чего делаются такие сетки как в тг у галереи, которые адаптируются сами в зависимости от наполнения?
russian
programming
node.js
5
сегодня в 17:19
5
сегодня в 17:19
Node.js — русскоговорящее сообщество
A
Возможно ли доучиться самостоятельно до middle и пойти на удалёнку? Сейчас являюсь junior
russian
programming
node.js
4
сегодня в 03:52
A
Возможно ли доучиться самостоятельно до middle и пойти на удалёнку? Сейчас являюсь junior
russian
programming
node.js
4
сегодня в 03:52
Node.js — русскоговорящее сообщество
Ekaterina
Подскажите, почему не работает? Хочу в зависимости от запроса, загружать картинки в нужную паку
russian
programming
node.js
3
сегодня в 07:08
Ekaterina
Подскажите, почему не работает? Хочу в зависимости от запроса, загружать картинки в нужную паку
russian
programming
node.js
3
сегодня в 07:08
Node.js — русскоговорящее сообщество
Amwey
Приветствую, имею файл внутри репозитория проекта, который запускается единожды из командной строки, он лежит в папке где и другие файлы проекта, которые использует фреймворк,…
russian
programming
node.js
3
сегодня в 11:47
Amwey
Приветствую, имею файл внутри репозитория проекта, который запускается единожды из командной строки, он лежит в папке где и другие файлы проекта, которые использует фреймворк,…
russian
programming
node.js
3
сегодня в 11:47
Node.js — русскоговорящее сообщество
Valhalla
Awaits
Всем привет
Можете вкратце обяснить зачем nodejs приложение заворачивать в docker контейнер
Где не погляжу, то пишут что из за кроссплатформенности на разных ОС, но ведь node…
russian
programming
node.js
3
сегодня в 12:05
Valhalla
Awaits
Всем привет
Можете вкратце обяснить зачем nodejs приложение заворачивать в docker контейнер
Где не погляжу, то пишут что из за кроссплатформенности на разных ОС, но ведь node…
russian
programming
node.js
3
сегодня в 12:05
Node.js — русскоговорящее сообщество
Andy
Cox
кто как авторизацию сокетов делает? отправляете credentials обычным rest, сохраняете jwt на клиенте и открываете ws коннект и ловите токен в момент upgrade? или всё, включая а…
russian
programming
node.js
2
сегодня в 11:27
Смотреть еще
Hi team
For some reason, this plugin is breaking the display of posts when trying to edit a post in the block/preview editor.
The post opens but nothing is displayed (If I use the code editor as opposed to the block editor, the text and associated HTML code displays fine.
Opening the inspection console in chrome, I get the following error in the log.
Uncaught TypeError: _.pluck is not a function
at Object.setMarkers (mce-view.js?ver=5.9.1:145:16)
at tN.<anonymous> (plugin.js?wp-mce-49110-20201110:94:33)
at vp.c.fire (tinymce.min.js?ver=49110-20201110:2:197006)
at tN.fire (tinymce.min.js?ver=49110-20201110:2:197532)
at $w (tinymce.min.js?ver=49110-20201110:2:340139)
at tN.setContent (tinymce.min.js?ver=49110-20201110:2:347647)
at tN.<anonymous> (block-library.js?ver=fb8cfd789616fa32f70090a33b3e6be5:4914:47)
at vp.c.fire (tinymce.min.js?ver=49110-20201110:2:197006)
at tN.fire (tinymce.min.js?ver=49110-20201110:2:197532)
at tN.load (tinymce.min.js?ver=49110-20201110:2:347090)
Disabling Woocommerce Payments, causes the error to go away and the edited post to appear normally. The error appears to be linked to mce-view.js?ver=5.9.1
Please can you investigate the issues?
Many thanks
Рассматривать будем на примере данного объекта
const data = {
name: 'TypeError',
message: '',
errors: null,
sayHi: function() {
console.log(this.name)
}
}
Uncaught TypeError: *** is not a function
Данная ошибка возникает в том случае, когда у объекта мы пытаемся вызвать метод(функцию), но она таковой не является.
data.getName(); // <- Uncaught TypeError: data.getName is not a function
data.errors(); // <- Uncaught TypeError: data.errors is not a function
В первом случае getName()
нет в объекте, во втором, errors
не является функцией.
Несоответствие типов
Возможно, мы ожидаем, что к нам придет массив и мы пытаемся выполнить:
data.name.forEach(item => console.log(item));
Получим ошибку, так как у строк нет метода forEach
Ошибка экспорта/импорта зависимостей
// Экспорт из файла
const fnc = (a) => { return a*a; }
export { func: fnc() }
// Импорт
import { func } from 'module';
func(); // <- func is not a function
Мы ожидали, что будет импортирована функция, однако вместо самой функции, мы импортировали результат ее выполнения. Функции должны экспортироваться без вызова ()
Как избежать подобных ошибок?
Проверять, что приходит в объекте и существуют ли в объекте нужные нам данные. Один из вариантов проверки, воспользоваться console.log()
.
Можно начать с последнего ключа, однако лучше вывести весь пусть, чтобы понимать структуру, с которой работаем:
console.log(data) // { name: 'TypeError', message: '', errors: null, sayHi: [Function] }
console.log(data.errors) // null
console.log(data.sayHi) // [Function: sayHi]
Перед вызовом функции, желательно проверить ключ на тип. И если наш ключ является функцией, то вызывать.
// data существует, есть ключ sayHi и sayHi функция
if (data && data.sayHi && typeof data.sayHi === 'function') {
data.sayHi();
}
При проверке в if
лучше указывать полную цепочку ключей для проверки, так как, например, следующая конструкция вызовет исключение, т.к. data.values
не существует:
if (data.values.showValue && typeof data.values.showValue === 'function') {
console.log(data.values.showValue());
}
Сократить код можно, воспользовавшись оператором необязательной цепочки вызовов ‘?.‘:
// data существует?, есть ключ sayHi и sayHi функция
if (data?.sayHi && typeof data.sayHi === 'function') {
data.sayHi();
}
Оператор необязательной цепочки вызовов будет проверять значение слева. Если значение null
или undefined
, цепочка прерывается и возвращается значение undefined
.
Порой, такие ошибки, даже когда мы уверены в правильности данных, могут быть вызваны банальной опечаткой. Проверяйте себя и свой код!
if (data && data.sayHi && typeof data.sayHi === 'function') {
data.sayHI(); // sayHI нет, но есть sayHi
}
Импорт/экспорт функций
При экспорте функций, передается только имя функции.
// Экспорт из файла
const fnc = (a) => { return a*a; }
export { func: fnc } // Нет ()
// Импорт
import { func } from 'module';
func(2); // <- 4
Отдельное исключение есть для функций или классов, когда нам это необходимо. Допустим нам нужен глобальный счетчик.
function counterFnc() {
let count = 0;
return () => {
return ++count;
}
}
class Counter {
#count = 0;
inc() {
return ++this.#count;
}
}
const incer = new Counter();
export {
counter: counterFnc(),
countCl: incer,
increase: incer.inc
}
// import
import { counter, countCl, increase } from 'module';
counter(); // OK
countCl.inc(); // OK
increase(); // OK