【问题标题】:Meteor crashed after I did a git init and created a new branch在我做了一个 git init 并创建了一个新分支后,Meteor 崩溃了
【发布时间】:2014-12-31 17:40:20
【问题描述】:

我正在做一个流星项目,这是我第一次使用 Meteor。

一切正常,直到我决定对我正在工作的目录执行“git init”,然后执行“git checkout -b gh-pages”。这样我就可以在这里向 S.O. 发布一个 repo 和一个现场演示。因为我有一个完全不同的问题。

在摆弄过去很容易的事情(创建 gh-pages)之后,该过程不再适合我,不确定 GitHub 是否改变了他们创建页面的过程,但由于某种原因,它对我不起作用,即使在关注之后这些说明:https://help.github.com/articles/creating-project-pages-manually/

在创建另一个分支并尝试将我拥有的代码推送到 gh-pages 后,我突然开始收到这些错误。

对不起,这很长:

=> Started proxy.                             
=> Started MongoDB.                           
W20141230-20:19:22.649(-5)? (STDERR)          
W20141230-20:19:22.735(-5)? (STDERR) /Users/MARS/.meteor/packages/meteor-tool/.1.0.38.z83ibe++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:173
W20141230-20:19:22.735(-5)? (STDERR)                        throw(ex);
W20141230-20:19:22.735(-5)? (STDERR)                              ^
W20141230-20:19:22.735(-5)? (STDERR) Error: A method named '/players/insert' is already defined
W20141230-20:19:22.736(-5)? (STDERR)     at packages/ddp/livedata_server.js:1444:1
W20141230-20:19:22.736(-5)? (STDERR)     at Function._.each._.forEach (packages/underscore/underscore.js:113:1)
W20141230-20:19:22.736(-5)? (STDERR)     at [object Object]._.extend.methods (packages/ddp/livedata_server.js:1442:1)
W20141230-20:19:22.736(-5)? (STDERR)     at [object Object].Mongo.Collection._defineMutationMethods (packages/mongo/collection.js:886:1)
W20141230-20:19:22.736(-5)? (STDERR)     at new Mongo.Collection (packages/mongo/collection.js:208:1)
W20141230-20:19:22.737(-5)? (STDERR)     at app/leaderboard.js:1:50
W20141230-20:19:22.737(-5)? (STDERR)     at app/leaderboard.js:80:3
W20141230-20:19:22.737(-5)? (STDERR)     at /Users/MARS/Desktop/Sandbox/meteor/leaderboard/.meteor/local/build/programs/server/boot.js:175:10
W20141230-20:19:22.737(-5)? (STDERR)     at Array.forEach (native)
W20141230-20:19:22.737(-5)? (STDERR)     at Function._.each._.forEach (/Users/MARS/.meteor/packages/meteor-tool/.1.0.38.z83ibe++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
=> Exited with code: 8

在以“=>您的应用程序正在崩溃。等待文件更改”结束之前,它执行了 3 次。

以前有没有人遇到过这种情况,或者谁能解释一下为什么会发生这种情况?

这是我目前唯一的代码:

PlayersList = new Mongo.Collection('players');

if(Meteor.isClient){
  Template.leaderboard.helpers({
    'player' : function(){
        return PlayersList.find( {}, {sort: {score: -1, name: 1} });
    },
    'count' : function() {
        return PlayersList.find().count();
    },
    'selectedClass' : function() {
      var playerId = this._id;
      var selectedPlayer = Session.get('selectedPlayer');
      if(playerId === selectedPlayer) {
        return "selected";
      }
    },
    'showSelectedPlayer' : function() {
      var selectedPlayer = Session.get('selectedPlayer');
      return PlayersList.findOne(selectedPlayer);
    }
  });

  Template.leaderboard.events({
    'click .player' : function() {
      var playerId = this._id;
      Session.set('selectedPlayer', playerId);
    },
    'click .increment' : function() {
      var selectedPlayer = Session.get('selectedPlayer');
        PlayersList.update(selectedPlayer, {$inc: {score: 5} });
    },
    'click .decrement' : function() {
      var selectedPlayer = Session.get('selectedPlayer');
        PlayersList.update(selectedPlayer, {$inc: {score: -5} });
    },
    'click .remove' : function() {
      var selectedPlayer = Session.get('selectedPlayer');
      alert('Are you sure you want to delete this fool?');
      PlayersList.remove(selectedPlayer);
    }
  });

  Template.addPlayerForm.events({
    'submit form' : function(event) {
      event.preventDefault();

      var playerNameVar = event.target.playerName.value;
      var playerScoreVar = event.target.playerScore.value;

      PlayersList.insert({
        name: playerNameVar,
        score: playerScoreVar
      });

      var formAddPlayer = document.getElementById('formAddPlayer');

      formAddPlayer.reset();
    }
  });
}

if(Meteor.isServer){

}

谢谢。

【问题讨论】:

  • 我投票给堆栈溢出中最具启示性的问题标题 :-)

标签: javascript mongodb meteor


【解决方案1】:

我以前遇到过这样的问题。为我解决的只是运行git clean -dfx 我真的没有看到您的代码有什么问题应该引发该错误。可能只是 git 很奇怪。

【讨论】:

  • 关于 git clean -dfx 的好技巧,以前从未使用过。
【解决方案2】:

错误A method named '/xxx/insert' is already defined 有点晦涩难懂,但这意味着您的服务器上运行了这段代码两次。

PlayersList = new Mongo.Collection('players');

鉴于您曾经在文件顶部找到过它,您应该在目录中的其他位置查找它。

我不确定 git 具体做了什么,但错误是由于一个集合被定义了两次,所以目录中的某处必须有重复的代码块。

【讨论】:

  • 是的,当我克隆我在 github 上创建的 repo 并将其创建为孤儿时,它复制了代码并在我的根目录中创建了一个目录,所以我似乎在某个地方发生了冲突.我刚刚删除了我刚才提到的那个内部目录,我很高兴。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 2012-02-06
  • 2022-01-16
  • 2021-05-28
  • 2021-12-10
  • 2011-08-19
  • 2012-01-15
  • 1970-01-01
相关资源
最近更新 更多