我是Meteor的新手,想要制作一个简单的应用程序.根据
http://terokaisti.blogspot.com/2012/10/writing-terminal-app-with-meteor-js.html,我无法模拟服务器端的命令行
在客户端(Mac OSX Mavericks),结果只是空白我输入命令并点击“运行”按钮.我正在使用上面网站的确切代码,除了我有autorun和exec = Npm.require(‘child_process’).exec;
下面是我的html和js文件……
TerminalApp.html
MeteorJS terminal{{> terminal}}
{{ window }}
TerminalApp.js
// A collection for stdouts
var Replies = new Meteor.Collection('replies');
if(Meteor.is_client) {
// Start listening changes in Replies
Meteor.autorun(function() {
Meteor.subscribe('replies');
});
// Set an observer to be triggered when Replies.insert() is invoked
Replies.find().observe({
'added': function(item) {
// Set the terminal reply to Session
Session.set('stdout',item.message);
}
});
// Show the last command in input field
Template.terminal.last_cmd = function() {
return Session.get('last_cmd');
};
// Show the last shell reply in browser
Template.terminal.window = function() {
return Session.get('stdout');
};
// Add an event listener for Run-button
Template.terminal.events = {
'click [type="button"]': function() {
var cmd = $('#command').val();
Session.set('last_cmd',cmd);
// Call the command method in server side
Meteor.call('command',cmd);
}
};
}
if(Meteor.is_server) {
var exec;
// Initialize the exec function
Meteor.startup(function() {
exec = Npm.require('child_process').exec;
});
// Trigger the observer in Replies collection
Meteor.publish('replies',function() {
return Replies.find();
});
Meteor.methods({
'command': function(line) {
// Run the requested command in shell
exec(line,function(error,stdout,stderr) {
// Collection commands must be executed within a Fiber
Fiber(function() {
Replies.remove({});
Replies.insert({message: stdout ? stdout : stderr});
}).run();
});
}
});
}
我错过了什么?我怎么调试?提前致谢!