谁能告诉我为什么下面的代码会抛出下面的错误:
Error: A method named '/players/insert' is already defined 我是Meteor和coffeescript的新手,所以我可能忽略了一些简单的东西。
以下是我将排行榜示例移植到coffeescript:
###
Set up a collection to contain player information. On the server,
it is backed by a MongoDB collection named "players."
###
Players = new Meteor.Collection("players")
if Meteor.is_client
Template.leaderboard.players = ->
Players.find({}, {sort: {score: -1, name: 1}})
Template.leaderboard.selected_name = ->
player = Players.findOne(Session.get "selected_player")
player and player.name
Template.player.selected = -> if Session.equals("selected_player", this._id) then "selected" else ''
Template.leaderboard.events = {
'click input.inc': ->
Players.update(Session.get("selected_player"), {$inc: {score: 5}})
}
Template.player.events = {
'click': ->
Session.set("selected_player", this._id)
}
# On server startup, create some players if the database is empty.
if Meteor.is_server
Meteor.startup ->
if Players.find().count() is 0
names = [
"Ada Lovelace"
"Grace Hopper"
"Marie Curie"
"Carl Friedrich Gauss"
"Nikola Tesla"
"Claude Shannon"
]
Players.insert({name: name, score: Math.floor(Math.random()*10)*5}) for name in names完整的堆栈跟踪如下:
[[[[[ ~/dev/meteor/leaderboard ]]]]]
Running on: http://localhost:3000/
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: A method named '/players/insert' is already defined
at app/packages/livedata/livedata_server.js:744:15
at Function.<anonymous> (app/packages/underscore/underscore.js:84:24)
at [object Object].methods (app/packages/livedata/livedata_server.js:742:7)
at new <anonymous> (app/packages/mongo-livedata/collection.js:111:13)
at app/leaderboard.js:4:11
at /Users/alex/dev/meteor/leaderboard/.meteor/local/build/server/server.js:109:21
at Array.forEach (native)
at Function.<anonymous> (/Users/alex/dev/meteor/leaderboard/.meteor/local/build/server/underscore.js:76:11)
at /Users/alex/dev/meteor/leaderboard/.meteor/local/build/server/server.js:95:7
Exited with code: 1我运行的是Meteor版本0.4.0 (8f4045c1b9)
提前感谢您的帮助!
发布于 2012-10-24 00:43:42
如果您复制了文件,则无论使用coffeescript还是纯javascript,您都会收到此错误。例如,将源文件复制到名为Backup的子目录会产生此错误,因为Meteor会合并子目录中的文件。
发布于 2012-09-21 22:45:49
这似乎是coffeelint (与npm一起全局安装)的配置问题。
我最初安装coffeelint是为了检查我的coffeescript代码是否正确并且没有错误。
我按照说明安装了coffeelint:
sudo npm install -g coffeelint
当针对.coffee文件独立运行时,coffeelint工作得很好。
然而,当运行任何添加了coffeescript包的Meteor项目时,我得到了上面的错误。
一时兴起,我认为这个错误可能是由于我现有的节点安装冲突造成的。
我决定先用下面的命令来卸载coffeelint:
sudo npm uninstall -g coffeelint
然后删除先前由流星生成的leaderboard.js文件。
在重新启动meteor之后,上面的coffeescript示例按照预期工作,没有错误。
发布于 2012-10-21 00:10:11
试着移动(复制和删除原件)
Players = new Meteor.Collection("players")
一次低于if Meteor.is_client,另一次低于if Meteor.is_server
我不知道为什么,因为我也是Meteor的新手,但这对我来说很有效,我假设服务器端需要它自己的引用,也需要客户端,尽管在作用域之外声明应该做同样的事情(可能是bug,记住他们仍然是0.5.0预览版,这让我认为你可能想升级和尝试一些新版本中的新智能包,看起来你正在使用0.4)。但是当我的服务器中的文件不能识别任何东西时,我定义了meteor的根目录(它将这些文件推送到客户端和服务器),我定义了服务器自己的引用,我得到了同样的错误,直到我移动引用的'public‘声明,给服务器和客户端各自提供自己的副本,一切都不起作用。
希望这能帮上忙。
https://stackoverflow.com/questions/12522490
复制相似问题