我正在使用流星构建协作文本编辑器Web应用程序。同样,我添加了一个名为“ 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
谁能告诉我我可能要去哪里了 谢谢。
答案 0 :(得分:1)
类似的东西来自this line:
export const ShareJS = ShareJS || {};
正如错误所言,它试图将变量ShareJS分配给ShareJS的内容,直到完成表达式后才对其进行定义。
这在较旧的Meteor版本中是可行的,因为要支持较旧的浏览器,const
的声明将被转换为var
(使用一些帮助程序来防止重新分配)。
最近,Meteor已开始为现代浏览器生产现代捆绑包,而这些捆绑包不会更改const
之类的代码。
不幸的是,此代码从一开始就不正确,但直到现在都没有显示为越野车。
最简单的方法是自己编辑该行。您可以通过将源代码从github下载到应用程序的packages
文件夹中来进行本地派生。然后将const
更改为var
。
您将需要编辑sharejs-base
软件包。
或者,您可以使用npm中的ShareJS的最新版本,并自己实现服务器和客户端部分。