Я получаю следующую ошибку в Chrome 66 при доступе к панели в нашем экземпляре (работает 1.6.6).
Между тем доступ с Firefox 60 работает без проблем. Какие-нибудь советы?
An error occurred
The error was reported with the following id: 'qZF4pJdMtrdhNgDJlfp0'
Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster:
'ErrorId: qZF4pJdMtrdhNgDJlfp0
URL: https://pad.example.com/padname
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Uncaught TypeError: Cannot read property 'setStateIdle' of null in https://pad.example.com/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define at line 3'
Кажется, это происходит из этого раздела кода, где pad.collabClient
кажется нулевым:
socket.on("error", function(e) {
pad.collabClient.setStateIdle(),
pad.collabClient.setIsPendingRevision(!0)
});
При паузе с точкой останова ошибка e
не определена.
Согласно стеку вызовов, в этом вызове произошла ошибка:
io.connect(n, {
path: exports.baseURL + "socket.io",
resource: a,
reconnectionAttempts: 5,
reconnection: !0,
reconnectionDelay: 1e3,
reconnectionDelayMax: 5e3
})
PS: На самом деле удивительно, что pad.collabClient
уже используется в handshake()
, а инициализируется только в _afterHandshake()
.
PPS: следующая информация по поиску и устранению неисправностей:
Etherpad version
Version number: 1.6.6
Git sha: 7e69a82
Installed plugins
ep_etherpad-lite
Installed parts
ep_etherpad-lite/swagger
ep_etherpad-lite/adminsettings
ep_etherpad-lite/adminplugins
ep_etherpad-lite/admin
ep_etherpad-lite/tests
ep_etherpad-lite/socketio
ep_etherpad-lite/errorhandling
ep_etherpad-lite/importexport
ep_etherpad-lite/apicalls
ep_etherpad-lite/webaccess
ep_etherpad-lite/padreadonly
ep_etherpad-lite/padurlsanitize
ep_etherpad-lite/specialpages
ep_etherpad-lite/i18n
ep_etherpad-lite/static
ep_etherpad-lite/express
Installed hooks
Server side hooks
expressCreateServer
ep_etherpad-lite/node/hooks/express/swagger:expressCreateServer from ep_etherpad-lite/swagger
expressCreateServer
ep_etherpad-lite/node/hooks/express/adminsettings:expressCreateServer from ep_etherpad-lite/adminsettings
expressCreateServer
ep_etherpad-lite/node/hooks/express/adminplugins:expressCreateServer from ep_etherpad-lite/adminplugins
expressCreateServer
ep_etherpad-lite/node/hooks/express/admin:expressCreateServer from ep_etherpad-lite/admin
expressCreateServer
ep_etherpad-lite/node/hooks/express/tests:expressCreateServer from ep_etherpad-lite/tests
expressCreateServer
ep_etherpad-lite/node/hooks/express/socketio:expressCreateServer from ep_etherpad-lite/socketio
expressCreateServer
ep_etherpad-lite/node/hooks/express/errorhandling:expressCreateServer from ep_etherpad-lite/errorhandling
expressCreateServer
ep_etherpad-lite/node/hooks/express/importexport:expressCreateServer from ep_etherpad-lite/importexport
expressCreateServer
ep_etherpad-lite/node/hooks/express/apicalls:expressCreateServer from ep_etherpad-lite/apicalls
expressCreateServer
ep_etherpad-lite/node/hooks/express/padreadonly:expressCreateServer from ep_etherpad-lite/padreadonly
expressCreateServer
ep_etherpad-lite/node/hooks/express/padurlsanitize:expressCreateServer from ep_etherpad-lite/padurlsanitize
expressCreateServer
ep_etherpad-lite/node/hooks/express/specialpages:expressCreateServer from ep_etherpad-lite/specialpages
expressCreateServer
ep_etherpad-lite/node/hooks/i18n:expressCreateServer from ep_etherpad-lite/i18n
expressCreateServer
ep_etherpad-lite/node/hooks/express/static:expressCreateServer from ep_etherpad-lite/static
socketio
ep_etherpad-lite/node/hooks/express/adminsettings:socketio from ep_etherpad-lite/adminsettings
socketio
ep_etherpad-lite/node/hooks/express/adminplugins:socketio from ep_etherpad-lite/adminplugins
expressConfigure
ep_etherpad-lite/node/hooks/express/webaccess:expressConfigure from ep_etherpad-lite/webaccess
createServer
ep_etherpad-lite/node/hooks/express:createServer from ep_etherpad-lite/express
restartServer
ep_etherpad-lite/node/hooks/express:restartServer from ep_etherpad-lite/express
Client side hooks
Связанный?
TypeError: pad.collabClient is null in https://pad.fralix.ovh/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define at line 3'
Это показано мне вместо непойманной строки. Эта проблема сохранялась для меня в течение многих лет (!) При установке по умолчанию, у меня была еще одна попытка с новой установкой, но все еще возникала та же проблема с использованием Firefox (Nightly)
PS: На самом деле удивительно, что pad.collabClient уже используется в handshake (), а инициализируется только в _afterHandshake ().
Действительно, @caugner.
Я не могу вызвать ошибку ( текущая разработка , Firefox 61 , Chromium 68 ), но непростая инициализация сама по себе является потенциальной проблемой. Исправление этого, вероятно, могло бы дать нам подсказку об этой проблеме или решить ее в целом.
@ anugu-chegg, так как вы внимательно работали над этим файлом для # 3318 , у вас есть какие-нибудь подсказки?
Эй, я больше не могу воспроизвести проблему с правильной настройкой прокси:
https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy
https://github.com/ether/etherpad-lite/issues/2318#issuecomment -63548542
Итак, я предполагаю, что проблема действительно связана с подключением к сокету, и чтение всех руководств может помочь? :радость:
Хорошие новости, @fralix.
Хорошая документация - это бесценно.
Я оставляю вопрос открытым, так как меня по-прежнему интересует "фантомная" инициализация, обнаруженная @caugner.
Я начинаю думать о том, как улучшить кодовую базу, не переписывая ее (больше тестов, линтеров, статических анализаторов, возможно, даже постепенно переходя на TypeScript ...), и такого рода вопросы меня очень интересуют.
Всем привет,
спасибо за создание etherpad. Я использую его в проекте для Friday For Future Germany.
Эта ошибка также возникла в нашей установке версии 1.7.5
:
Uncaught TypeError: Cannot read property 'setStateIdle' of null in https://domain.removed.also.the.path/static/js/pad.js?callback=require.define at line 3'
У нас установлены следующие плагины:
ep_etherpad-lite
ep_headings2
ep_font_color
ep_footer
Просто хотел сообщить об этом!
Дайте мне знать, если я могу предоставить дополнительную информацию для решения этой проблемы.
Я могу подтвердить, что эта ошибка присутствует и в версии 1.8.0.
Dec 12 10:59:51 etherpad nodejs[28467]: #033[33m[2019-12-12 10:59:51.645] [WARN] client - #033[39mUncaught TypeError: Cannot read property 'setStateIdle' of null -- { errorId: 'ZFFGAJRhNPLZkgcdXRxQ',
Dec 12 10:59:51 etherpad nodejs[28467]: 'Uncaught TypeError: Cannot read property \'setStateIdle\' of null',
Я использую etherpad_lite версии 1.6.0. мы также наблюдали эту проблему
App 19183 output: [33m[2020-03-26 09:29:22.650] [WARN] client - [39mUncaught TypeError: Cannot read property 'setStateIdle' of null -- { errorId: '3tl0hHxTQ9rwZ0ojNXoI',
App 19183 output: msg:
App 19183 output: 'Uncaught TypeError: Cannot read property \'setStateIdle\' of null',
App 19183 output: url:
App 19183 output: 'https://etherpad.vnc.biz/etherpad/p/g.INJVOHVXSaiTwtQM$0c6efa006f3911ea8c106f96aa173764',
App 19183 output: linenumber: 3,
App 19183 output: userAgent:
App 19183 output: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/80.0.3987.87 Chrome/80.0.3987.87 Safari/537.36' }
Кто-нибудь может найти решение этой проблемы?
и я знаю эту проблему, связанную с подключением к сокету, но не могу выяснить точную основную причину этой проблемы. Почему возникает ошибка сокета?
@vijaygodhasara Пожалуйста, не используйте Etherpad 1.6. Пожалуйста, обновите и сообщите нам, если проблема не исчезнет.
@xshadow Пожалуйста, предоставьте некоторую информацию, например:
FWIW Я не вижу этой ошибки ни в одном из наших экземпляров, поэтому я думаю, что это проблема конфигурации или что-то, что не связано с Core.
Пожалуйста, посмотрите https://github.com/ether/etherpad-lite/issues/3405#issuecomment -413032184 - После успешной настройки прокси эта проблема исчезла для меня. Я снова увидел это, когда было нестабильное сетевое соединение, так что, вероятно, это связано с некоторыми проблемами с чем-то некорректно доступным, но в основном это проблема с настройкой / сетью.
Я думаю, что эту ошибку можно закрыть, если текущие репортеры не отвечают, и если кто-то снова столкнется с ней, они должны предоставить более подробную информацию о конфигурации и проверить, не проблема ли это с их сетевым подключением ... Кроме того, очень полезно открыть консоль отладки браузера и проверьте сетевые подключения. В частности, некоторые неправильно настроенные CSP могут препятствовать загрузке ресурсов. У меня это было только в другом проекте.
Закрытие, снова откроется, если кто-то начнет двигаться вперед.
Если у кого-то возникают проблемы при настройке экземпляра (когда нет конфиденциальных данных пользователя), может быть интересно взглянуть на систему и начать оттуда отладку. Думаю, я мог бы позволить себе время, чтобы проверить, является ли это общей проблемой конфигурации системы, но я не разработчик NodeJS / etherpad, поэтому я не смогу продолжить отладку, если это действительно ошибка etherpad.
@JohnMcLear После просмотра настроек прокси я могу подтвердить, что исправление, упомянутое в комментариях выше , помогло.
Эта ошибка воспроизводится на разных экземплярах etherpads в android и chrome.
Проверено на моем собственном сервере и на https://etherpad.wikimedia.org , https://video.etherpad.com.
Произошла ошибка
Пожалуйста, нажмите и удерживайте Ctrl и нажмите F5, чтобы перезагрузить эту страницу.
Если проблема не исчезнет, отправьте это сообщение об ошибке своему веб-мастеру:ErrorId: XDmLq2ENraoB3lM4ESfu
URL: https://etherpad.wikimedia.org/p/gxz0C7Rncg-J80ra7DQw
UserAgent: Mozilla / 5.0 (Linux; Android 10; Mi A2 Lite) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 83.0.4103.106 Mobile Safari / 537.36
Uncaught TypeError: невозможно прочитать свойство setStateIdle со значением null в https://etherpad.wikimedia.org/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define&v=f2b033c9 в строке 3
потом через "последние приложения" все закрыть
Я не вижу на экране "последних приложений" .. Куда мне смотреть?
Эх .. Андроид ... Сек.
Подтвержденная ошибка! Молодцы для репликации. У вас есть печенье, сэр! :)
Невозможно воспроизвести локально на последней разработке. Так это весело :)
Может тиражироваться на video.etherpad. com: 9001 (который напрямую связан с Etherpad).
Итак, чтобы сузить круг вопросов, это, возможно, связано с:
Ошибки Firefox (хорошего браузера) с pad.collabClient
в том же тесте.
Чем мобильные браузеры отличаются от обычных браузеров?
Похоже, это уже исправлено в последней разработке.
Я загрузил последнюю версию на https://video.etherpad.com
Вы все еще можете воспроизвести?
Etherpad движется довольно быстро, так что, возможно, это был крайний случай в версии до того, как я потянул. video.etherpad.com часто отстает от разработки на несколько недель, потому что я слишком занят, чтобы держать ее в курсе; /
From https://github.com/ether/etherpad-lite
2cd3dccc..75ecb3f4 develop -> origin/develop
Привет, @JohnMcLear! Поздравляем, ошибка не может быть воспроизведена на https://video.etherpad.com.
Спасибо вам за вашу работу!
Он все еще там. Я могу воспроизвести, посмотрев на код, но я не уверен, как это связано с закрытием и повторным открытием вкладки в android. В функции рукопожатия pad.js регистрируются обратные вызовы для событий сокета, которые используют collabClient. Однако collabClient имеет значение null, пока он не будет установлен в _afterHandshake сразу после получения CLIENT_VARS.
Итак, для репликации в firefox / chromium на рабочем столе:
Загрузите планшет с открытым режимом разработчика, и как только вы увидите XHR-Polling для eio, отключите сеть. Убедитесь, что вы не получили CLIENT_VARS. Затем подождите несколько секунд, пока не начнется фаза повторного подключения.
Итак, следующий вопрос: почему было исправлено обновление и перезапуск video.etherpad.com ??!
Биссектриса показывает 128f3e15ebf89f69d97dce34c8d5b8c238e952d2 как фиксацию фиксации. В этом есть смысл.
Профессиональный разработчик следующего уровня исправляет ошибки до того, как они проявятся ...
Я думаю, что в jquery или в том, как мы его используем, была какая-то проблема, которая была легко запущена и теперь решена с помощью 128f3e15ebf89f69d97dce34c8d5b8c238e952d2
Ошибка, возникающая при повторном подключении (например, из-за плохой сети клиента) до получения CLIENT_VARS, все еще существует.
В моем случае я вижу выше stacktrace ~ 1 раз в день. Не уверен, есть ли третий способ вызвать его или все случаи на моем экземпляре связаны с плохой сетью.
@vijaygodhasara Пожалуйста, не используйте Etherpad 1.6. Пожалуйста, обновите и сообщите нам, если проблема не исчезнет.
Я использую 1.8.6 и все равно получаю ошибку!
@cdruet, можете ли вы предоставить какие-либо подробности? Вы тестировали без плагинов?
@JohnMcLear У меня такая же проблема с 1.8.6 (
Вот пример: https://mrtopf.de/test.html
загрузка этой панели: https://yopad.eu/p/textframe
Установленные плагины - это страница комментариев и заголовки2.
Надеюсь, позже у меня будет время протестировать его при новой установке без плагинов (так как я не обязательно хочу отключать их в производственной среде)
@JohnMcLear Я тоже использую comments_page. Вдобавок к этому auth_session.
Я могу протестировать сегодня позже без comments_page, но я auth_session, чтобы добраться до планшетов.
Отправлено через Unibox
@cdruet и @mrtopf : Можете ли вы попробовать последнюю фиксацию в ветке develop
и установить для параметра cookie.sameSite
значение None
? После версии 1.8.6 были внесены некоторые изменения в файлы cookie, которые могут иметь значение.
@rhansen, а теперь можно закрыть?
@rhansen извините, был немного занят, и настройка тестового сервера заняла немного времени. Но я протестировал develop
и, похоже, это сработало. Так что жду следующего релиза. Спасибо!
Я получил эту ошибку с 1.8.5 и текущей основной версией (на основе 1.8.6 = commit 2c8769a6fd9fa4ed36ed6e32ba0826037795fb37)
при обновлении для разработки первые тесты вроде в порядке.
когда ожидается следующий релиз?
Настройка: включить etherpad через iframe на сервере, работающем на localhost.
Трассировка стека (из основной версии, 1.8.6 ++, как указано выше), если это все еще актуально:
| (анонимно) | @ | pad.js? callback = Requ… штраф & v = 564a4939: 227
- | - | - | -
| r.emit | @ | index.js: 83
| r.emit | @ | index.js: 83
| r.emitAll | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| setTimeout (асинхронный) | |
| r.reconnect | @ | index.js: 83
| r.onclose | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| r.emit | @ | index.js: 83
| r.onClose | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| setTimeout (асинхронный) | |
| r.onHeartbeat | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| setTimeout (асинхронный) | |
| r.setPing | @ | index.js: 83
| r.onHandshake | @ | index.js: 83
| r.onPacket | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| r.emit | @ | index.js: 83
| r.onPacket | @ | index.js: 83
| п | @ | index.js: 83
| e.decodePayload | @ | index.js: 83
| r.onData | @ | index.js: 83
| (анонимно) | @ | index.js: 83
| r.emit | @ | index.js: 83
| i.onData | @ | index.js: 83
| i.onLoad | @ | index.js: 83
| hasXDR.e.onreadystatechange | @ | index.js: 83
| XMLHttpRequest.send (асинхронный) | |
| i.create | @ | index.js: 83
| я | @ | index.js: 83
| o.request | @ | index.js: 83
| o.doPoll | @ | index.js: 83
| r.poll | @ | index.js: 83
| r.doOpen | @ | index.js: 83
| r.open | @ | index.js: 83
| r.open | @ | index.js: 83
| г | @ | index.js: 83
| г | @ | index.js: 83
| r.open.r.connect | @ | index.js: 83
| г | @ | index.js: 83
| г | @ | index.js: 83
| г | @ | index.js: 83
| рукопожатие | @ | pad.js? callback = Requ… штраф & v = 564a4939: 207
| (анонимно) | @ | pad.js? callback = Requ… штраф & v = 564a4939: 484
| mightThrow | @ | ace2_common.js? callb… ine & v = 564a4939: 3910
| процесс | @ | ace2_common.js? callb… ine & v = 564a4939: 3978
| setTimeout (асинхронный) | |
| (анонимно) | @ | ace2_common.js? callb… ine & v = 564a4939: 4016
| огонь | @ | ace2_common.js? callb… ine & v = 564a4939: 3645
| добавить | @ | ace2_common.js? callb… ine & v = 564a4939: 3704
| (анонимно) | @ | ace2_common.js? callb… ine & v = 564a4939: 4036
| Отложено | @ | ace2_common.js? callb… ine & v = 564a4939: 4120
| тогда | @ | ace2_common.js? callb… ine & v = 564a4939: 4021
| jQuery.fn.ready | @ | ace2_common.js? callb… ine & v = 564a4939: 4198
| init | @ | pad.js? callback = Requ… штраф & v = 564a4939: 480
| init | @ | pad.js? callback = Requ… штраф & v = 564a4939: 960
| (анонимно) | @ | test1? lang = de: 725
| setTimeout (асинхронный) | |
| обратный звонок | @ | ace2_common.js? callb… ne & v = 564a4939: 12053
| (анонимно) | @ | ace2_common.js? callb… ne & v = 564a4939: 12060
| огонь | @ | ace2_common.js? callb… ine & v = 564a4939: 3645
| fireWith | @ | ace2_common.js? callb… ine & v = 564a4939: 3775
| сделано | @ | ace2_common.js? callb… ine & v = 564a4939: 9466
| (анонимно) | @ | ace2_common.js? callb… ine & v = 564a4939: 9708
| загрузка (асинхронная) | |
| отправить | @ | ace2_common.js? callb… ine & v = 564a4939: 9727
| ajax | @ | ace2_common.js? callb… ine & v = 564a4939: 9367
| jQuery.
| getJSON | @ | ace2_common.js? callb… ine & v = 564a4939: 9497
| export.update | @ | ace2_common.js? callb… ne & v = 564a4939: 12055
| (анонимно) | @ | test1? lang = de: 717
| (анонимно) | @ | test1? lang = de: 735
когда ожидается следующий релиз?
Скоро. Надеюсь на этой неделе.
Самый полезный комментарий
Хорошие новости, @fralix.
Хорошая документация - это бесценно.
Я оставляю вопрос открытым, так как меня по-прежнему интересует "фантомная" инициализация, обнаруженная @caugner.
Я начинаю думать о том, как улучшить кодовую базу, не переписывая ее (больше тестов, линтеров, статических анализаторов, возможно, даже постепенно переходя на TypeScript ...), и такого рода вопросы меня очень интересуют.