【问题标题】:Error: A method is already defined?错误:方法已定义?
【发布时间】:2015-09-20 21:02:49
【问题描述】:

尝试使用meteor 命令构建时,我的终端出现以下错误:

W20150920-14:33:43.538(-5)? (STDERR)          
W20150920-14:33:43.539(-5)? (STDERR) /Users/cwahlfeldt/.meteor/packages/meteor-tool/.1.1.4.g96qzu++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245
W20150920-14:33:43.539(-5)? (STDERR)                        throw(ex);
W20150920-14:33:43.539(-5)? (STDERR)                              ^
W20150920-14:33:43.575(-5)? (STDERR) Error: A method named 'queuerInsert' is already defined
W20150920-14:33:43.575(-5)? (STDERR)     at packages/ddp/livedata_server.js:1461:1
W20150920-14:33:43.575(-5)? (STDERR)     at Function._.each._.forEach (packages/underscore/underscore.js:113:1)
W20150920-14:33:43.575(-5)? (STDERR)     at [object Object]._.extend.methods (packages/ddp/livedata_server.js:1459:1)
W20150920-14:33:43.575(-5)? (STDERR)     at app/lib/collections/queuers.js:31:12
W20150920-14:33:43.575(-5)? (STDERR)     at app/lib/collections/queuers.js:83:3
W20150920-14:33:43.576(-5)? (STDERR)     at /Users/cwahlfeldt/Sites/queue/.meteor/local/build/programs/server/boot.js:222:10
W20150920-14:33:43.576(-5)? (STDERR)     at Array.forEach (native)
W20150920-14:33:43.576(-5)? (STDERR)     at Function._.each._.forEach (/Users/cwahlfeldt/.meteor/packages/meteor-tool/.1.1.4.g96qzu++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20150920-14:33:43.576(-5)? (STDERR)     at /Users/cwahlfeldt/Sites/queue/.meteor/local/build/programs/server/boot.js:117:5
=> Exited with code: 8
=> Your application is crashing. Waiting for file change.
=> Modified -- restarting.

我已经有几周没有接触过该应用程序的本地版本了,据我所知,该应用程序当时运行良好,它的实时生产版本也是如此。我使用meteor reset 重置了数据库,我还删除了.meteor/local/db/ 目录并尝试使用新数据库重新开始......仍然没有。我在 Heroku 上有一个工作版本并将其克隆下来,一切正常,但我希望我的原始存储库能够工作。

谢谢!

附言这里是定义集合和方法的地方。

Queuers = new Mongo.Collection('queuers');

if (Meteor.server) {
    Meteor.methods({
        // insert a new queuer at the bottom of the list
        queuerInsert: function(queuerAttr) {
            var queuer = {
                name: queuerAttr.name,
                partySize: queuerAttr.partySize,
                phoneNumber: queuerAttr.phoneNumber,
                texted: false,
                date: new Date()
            };

            var queuerId = Queuers.insert(queuer);

            return {
                _id: queuerId
            };
        },
        // remove a single queuer
        queuerRemove: function(id) {
            if (id) {
                Queuers.remove(id);
            }
        },
        // reset the entire db of queuers
        queueReset: function() {
            Queuers.remove({});
        },
        messageQueuer: function(data) {
            var queuer = data.queuer;

            twilio = Twilio('KEY', 'KEY');
            twilio.sendSms({
                to: '+1' + queuer.phoneNumber, // Any number Twilio can deliver to
                from: '+NUMBER', // A number you bought from Twilio and can use for outbound communication
                body: data.message // body of the SMS message
            }, function(err, responseData) { //this function is executed when a response is received from Twilio
                if (!err) { // "err" is an error received during the request, if any
                    // "responseData" is a JavaScript object containing data received from Twilio.
                    // A sample response from sending an SMS message is here (click "JSON" to see how the data appears in JavaScript):
                    // http://www.twilio.com/docs/api/rest/sending-sms#example-1
                    console.log(responseData.from); // outputs "+NUMBER"
                    console.log(responseData.body); // outputs "word to your mother."
                }
            });

            return {
                date: queuer.date
            };           
        }
    });
}

【问题讨论】:

  • 您的代码在我这边没有复制。我假设你已经在另一个文件中再次定义了这个方法。
  • 尝试diff将旧的、损坏的文件夹与新的heroku克隆文件夹一起使用。

标签: mongodb meteor methods


【解决方案1】:

你的packages 文件夹中不应该有ddp,我猜你两次导入autoform 或其中一个项目

尝试删除 packages 文件夹并重试

【讨论】:

  • 感谢您回复我。我不使用 autoform,并且不会删除 packages 文件夹破坏我的整个流星开发环境?听起来有点粗略。
猜你喜欢
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多