2017-05-09 144 views
1

我从main.js(服务器)调用我的方法,然后我在main.js(客户端)上使用Meteor.call(),然后我收到一个内部错误[500 ]调用流星方法导致内部服务器错误[500]

这里是我的文件结构

enter image description here

这是控制台错误

enter image description here

main.js(客户):

import Tasks from '../imports/api/task.js'; 
import './main.html'; 

Template.tasks.helpers({ 
    tasks() { 
     return Tasks.find({},{sort: {createdAt: -1}}) 
    } 
}); 

Template.tasks.events({ 
    'submit .add-task': function(event){ 
     var name = event.target.name.value; 
     Meteor.call('addTask', name); 


     return false; 
    }, 
    'click .delete-task': function(event){ 
     if(confirm('Delete Task?')){ 
      Meteor.call('deleteTask', this._id) 
     } 

    } 
}); 

main.js(服务器):

import { Meteor } from 'meteor/meteor'; 
import '../imports/api/task.js'; 


Meteor.startup(() => { 
    // code to run on server at startup 
    Meteor.methods({ 
     addTask: function(name){ 
      if(!Meteor.userId()){ 
       throw new Meteor.Error('Access Denied'); 
      } 
      Tasks.insert({ 
       name: name, 
       createdAt: new Date(), 
       userId: Meteor.userId() 
      }); 
     }, 
     deleteTask: function(taskId){ 
      Tasks.remove(taskId); 
     } 
    }); 

}); 
+1

服务器控制台中的错误是什么? – tomsp

+0

@tomsp任务未定义。我添加了控制台错误屏幕截图 – Makopa

+0

@tomsp感谢兄弟我专注于查看console.log错误。我没有注意到服务器控制台错误 – Makopa

回答

1

您需要定义您的只有服务器端方法。

Meteor.startup(() => { 
    // code to run on server at startup 
    if(Meteor.isServer){ 
     Meteor.methods({ 
      addTask: function(name){ 
       if(!Meteor.userId()){ 
        throw new Meteor.Error('Access Denied'); 
       } 
       Tasks.insert({ 
        name: name, 
        createdAt: new Date(), 
        userId: Meteor.userId() 
       }); 
      }, 
      deleteTask: function(taskId){ 
       Tasks.remove(taskId); 
      } 
     }); 
    } 
}); 
+0

我定义他们在服务器main.js检查文件结构 – Makopa

+0

我的服务器和客户端main.js是在不同的文件夹和文件, – Makopa

+0

然后你正在导入任务集合正确 –

1

好吧,我已经找到了答案,我虽然在做main.js import '../imports/api/task.js';(服务器端)将包括它里面所有的变量,得到的回答是,我需要这个import Tasks from '../imports/api/task.js';有人可以解释区别在哪里?

相关问题