ReferenceError: невозможно получить доступ к ShareJS перед инициализацией

Я создавал совместное веб-приложение для текстового редактора, используя Meteor. Для того же я добавил пакет с именем "mizzao:sharejs-codemirror", и после этого мое приложение вылетело при запуске и отображало следующую ошибку

ReferenceError: Cannot access 'ShareJS' before initialization
at module (packages/mizzao:sharejs/sharejs-server.js:8:24)
at fileEvaluate (packages\modules-runtime.js:336:7)
at Module.require (packages\modules-runtime.js:238:14)
at require (packages\modules-runtime.js:258:21)
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\packages\mizzao_sharejs.js:130:15
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\packages\mizzao_sharejs.js:135:3
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\boot.js:401:38
at Array.forEach (<anonymous>)
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\boot.js:226:21
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\boot.js:464:7
at Function.run (D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\profile.js:280:14)
at D:\Workspace\web\course4\week (1)\textcircle\.meteor\local\build\programs\server\boot.js:463:13

Может ли кто-нибудь сказать мне, где я могу ошибиться, спасибо.

1 ответ

Похоже, это происходит из этой строки:

export const ShareJS = ShareJS || {};

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

Это сработало бы в более старых версиях Meteor, потому что для поддержки старых браузеров const декларации были переданы var(с некоторыми помощниками, чтобы предотвратить повторное назначение). Недавно Meteor начал производить современные пакеты для современных браузеров, которые оставляют код вродеconst нетронутый.

К сожалению, этот код был неправильным с самого начала, но до сих пор не обнаруживал ошибок.

Самый простой способ обойти это - отредактировать строку самостоятельно. Вы можете сделать локальный форк, загрузив исходный код с github в папкуpackagesпапка вашего приложения. Затем изменитеconst к var.

Вам нужно будет отредактировать sharejs-base пакет.

В качестве альтернативы вы можете использовать последнюю версию ShareJS из npm и самостоятельно реализовать серверную и клиентскую часть.

Другие вопросы по тегам