2017-05-09 143 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';有人可以解釋區別在哪裏?

相關問題