因为在微信客户端环境,我们无法使用 console.log 查看前端显示的一些调试信息,如果需要用到调试,我们一般是使用 Session 方法来给前端一个固定专门显示日志的变量设定属性,这样这个固定的变量会跟随 Session.set 设定的值而变化。后面想了一个比较方便的办法,直接将客户端需要输出的日志信息通过 Meteor.call 发送到服务端打印我们就可以方便的在服务端一起看到server log 和 client log 了。

使用方法

在项目中添加 maodouio:logs 包,地址:https://atmospherejs.com/maodouio/logs

1
meteor add maodouio:logs

客户端调用

客户端在需要打印日志的位置,直接使用 Meteor.call 方法,call server 端的 printLog 方法,该方法是变参的,可以传递多个需要打印的参数:

1
2
3
4
5
6
7
8
9
Template.hello.events({
'click button': function () {
// increment the counter when button is clicked
counter = 1;
Meteor.call("printLog", "counter is " + counter);
// 可以传递多个参数
// Meteor.call("printLog", "counter is " + counter, "argument 2");
}
});

服务端打印信息

客户端调用后,服务端就会自动打印客户端输出的日志了,如下图: 屏幕快照 2015-11-17 下午3.23.14

其他问题

以上方法虽然可以把客户端 console.log 的信息打印到服务端,但是客户端出现的异常信息我们是无法捕获的,所以说你只能庆幸程序代码别出现会导致严重错误的异常,比如语法错误等,否则调试起来将会特别麻烦。