Etherpad-lite: Uncaught TypeError: невозможно прочитать свойство setStateIdle со значением null

Созданный на 28 мая 2018  ·  34Комментарии  ·  Источник: ether/etherpad-lite

Я получаю следующую ошибку в 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
Bug Needs confirmation

Самый полезный комментарий

Хорошие новости, @fralix.
Хорошая документация - это бесценно.

Я оставляю вопрос открытым, так как меня по-прежнему интересует "фантомная" инициализация, обнаруженная @caugner.

Я начинаю думать о том, как улучшить кодовую базу, не переписывая ее (больше тестов, линтеров, статических анализаторов, возможно, даже постепенно переходя на TypeScript ...), и такого рода вопросы меня очень интересуют.

Все 34 Комментарий

Связанный?
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 Пожалуйста, предоставьте некоторую информацию, например:

  • Ваш Etherpad на windows / linux
  • Точный Git Rev
  • Ваш Etherpad работает через обратный прокси-сервер? Если так, то?
  • У вас есть плагины?

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

Действия по воспроизведению

  1. в браузере Chrome откройте новую панель
  2. Напиши что-нибудь
  3. затем нажмите "домой" в андроиде
  4. потом через "последние приложения" все закрыть
  5. и снова запустите браузер Chrome
  6. он начнет открывать вашу последнюю панель и выдаст эту ошибку

потом через "последние приложения" все закрыть
Я не вижу на экране "последних приложений" .. Куда мне смотреть?

Эх .. Андроид ... Сек.

Подтвержденная ошибка! Молодцы для репликации. У вас есть печенье, сэр! :)

Невозможно воспроизвести локально на последней разработке. Так это весело :)

Может тиражироваться на video.etherpad. com: 9001 (который напрямую связан с Etherpad).

Итак, чтобы сузить круг вопросов, это, возможно, связано с:

  1. Плагин.
  2. SSL-сертификаты.
  3. Работает в производственном режиме.
  4. "медленнее", чем локальное соединение / состояние гонки?

Ошибки 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.| @ | ace2_common.js? callb… ine & v = 564a4939: 9516
| 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

когда ожидается следующий релиз?

Скоро. Надеюсь на этой неделе.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги