流星错误:已定义名为insert的方法

时间:2014-10-25 17:46:38

标签: javascript mongodb meteor

我创建了一个名为votes的mongo集合,即使在将软件包更新到最新的meteor版本之后也能正常工作。我不记得改变了工作代码的任何部分但是我得到了这个错误。我使用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

5 个答案:

答案 0 :(得分:6)

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

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

因此,如果WebStorm询问您是否要将TypeScript编译为JavaScript,请说

WebStorm - Compile TypeScript to JavaScript

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

TypeScript Compiler in WebStorm Preferences

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

WebStorm TypeScript Compiler Output

现在您的应用程序应该再次运行。快乐的编码!

答案 1 :(得分:5)

你的xyz.js文件代码是

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

删除

new Mongo.Collection('players');

答案 2 :(得分:3)

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

e.g。

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

剪切,粘贴和分心......

答案 3 :(得分:2)

我认为您在[{1}}

中的方法名称相同

答案 4 :(得分:0)

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

因此错误消息或多或少是正确的。看起来很奇怪,至少在我的系统上。