【问题标题】:Meteor Error: A method named insert is already definedMeteor 错误:已定义名为 insert 的方法
【发布时间】:2016-05-31 01:01:17
【问题描述】:

我创建了一个名为 votes 的 mongo 集合,即使在将包更新到最新的流星版本后它也能正常工作。我不记得更改了工作代码的任何部分,但是我收到了这个错误。我使用meteor update 命令更新了项目,并在更新后立即对其进行了测试。那个时候它运行成功,但我不知道为什么会出现这个错误。而且,不确定我应该添加哪个源文件以获得帮助...

谁能解释一下?

W20141025-21:29:08.640(6)? (STDERR) 
W20141025-21:29:08.641(6)? (STDERR) /home/wasi/.meteor/packages/meteor-tool/.1.0.34.k7p01x++os.linux.x86_32+web.browser+web.cordova/meteor-tool-os.linux.x86_32/dev_bundle/lib/node_modules/fibers/future.js:173
W20141025-21:29:08.641(6)? (STDERR)                         throw(ex);
W20141025-21:29:08.642(6)? (STDERR)                               ^
W20141025-21:29:08.693(6)? (STDERR) Error: A method named '/votes/insert' is already defined
W20141025-21:29:08.695(6)? (STDERR)     at packages/ddp/livedata_server.js:1439
W20141025-21:29:08.696(6)? (STDERR)     at Function._.each._.forEach (packages/underscore/underscore.js:113)
W20141025-21:29:08.697(6)? (STDERR)     at _.extend.methods (packages/ddp/livedata_server.js:1437)
W20141025-21:29:08.697(6)? (STDERR)     at Mongo.Collection._defineMutationMethods (packages/mongo/collection.js:884)
W20141025-21:29:08.698(6)? (STDERR)     at new Mongo.Collection (packages/mongo/collection.js:208)
W20141025-21:29:08.699(6)? (STDERR)     at app/collections/collection.js:1:43
W20141025-21:29:08.700(6)? (STDERR)     at app/collections/collection.js:58:3
W20141025-21:29:08.701(6)? (STDERR)     at /home/wasi/AI/OVS/.meteor/local/build/programs/server/boot.js:168:10
W20141025-21:29:08.702(6)? (STDERR)     at Array.forEach (native)
W20141025-21:29:08.702(6)? (STDERR)     at Function._.each._.forEach (/home/wasi/.meteor/packages/meteor-tool/.1.0.34.k7p01x++os.linux.x86_32+web.browser+web.cordova/meteor-tool-os.linux.x86_32/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
=> Exited with code: 8
=> Your application is crashing. Waiting for file change.
[=================== ] 94% 4.8s

【问题讨论】:

  • 很可能您正在重新定义votes 集合。
  • @ChristianFritz 哦!知道了。我的项目备份文件夹偶然被粘贴在项目根目录上。 Meteor 合并了所有子目录,因此 votes 集合被重新定义。谢谢!

标签: javascript mongodb meteor


【解决方案1】:

请注意:如果您当前使用Angular-Meteor tutorial 构建应用程序Socially 并且您使用的是集成开发环境 (IDE)比如WebStorm,它可以自动将TypeScript编译为JavaScript,我的回答可能会帮助你解决这个问题。


我在未重新定义集合的情况下收到此错误。后来我发现我的 IDE (WebStorm 2016.1) 导致了重复,因为它自动将 TypeScript 编译为 JavaScript,即使 Meteor 为我们处理了这项工作。幸运的是,我通过在 WebStorm 中禁用 TypeScript 编译器并删除编译器输出文件,摆脱了这个错误。

所以,如果 WebStorm 询问您是否要将 TypeScript 编译为 JavaScript,请说 No

如果您已经搞砸了设置,请转到 WebStorm首选项语言和框架TypeScript 并取消选中 “启用 TypeScript 编译器” 选项:

之后,删除 TypeScript 编译器输出文件:

现在您的应用程序应该可以再次运行了。编码愉快!

【讨论】:

  • 我为这个问题苦苦挣扎了一整天。非常感谢
【解决方案2】:

你的 xyz.js 文件代码是

  console.log("This is test panel ....");
  new Mongo.Collection('players');           <<-------remove This line 
    PlayersList = new Mongo.Collection('players');

删除

new Mongo.Collection('players');

【讨论】:

    【解决方案3】:

    我遇到了这个错误,因为我将同一个 mongo 集合放入了两个不同的变量中。

    例如

    CrowdEstimates = new Mongo.Collection('crowdEstimates');
    CrowdEstimateAggregations = new Mongo.Collection('crowdEstimates');
    

    剪切粘贴和分散注意力....

    【讨论】:

      【解决方案4】:

      我认为您在 app/collections/collection.js 中的方法名称相同

      【讨论】:

        【解决方案5】:

        我遇到了同样的错误消息,它发生在我重新组织了我的应用程序的文件夹结构之后。我在名为both 的文件夹中有一个名为drivers.js 的Javascript 集合,在both\collections\drivers.js 中有另一个同名(和代码)的Javascript 文件。

        所以错误信息或多或少是正确的。只是看起来很奇怪,至少在我的系统上是这样。

        【讨论】:

          猜你喜欢
          • 2016-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多