我想在Meteor项目中使用RiveScript。不过我无法运行。我通过npm安装RiveScript,然后按照npm网站上的指南进行操作。
读取RiveScript模块并为其提供用户输入的文件。
var RiveScript = require("RiveScript");
var bot;
function loadingDone(files) {
console.log("ok")
}
function loadingError(files, error) {
console.log("error");
}
Meteor.startup(function () {
bot = new RiveScript({utf8: true});
bot.loadDirectory("brain", loadingDone, loadingError);
bot.sortReplies();
});
Meteor.methods({
'user-input': function (input) {
return bot.reply("local-user", input);
}
});
我收到此错误(在服务器上):
(STDERR)用户本地用户所在的空主题为“随机”
bot.reply()函数的返回消息是:
错误:未找到默认主题“随机”!
最佳答案
RiveScript的作者在这里。
代码中的一个问题是,在答复完成加载之后(在sortReplies()
处理程序中),需要调用loadingDone
函数。
var RiveScript = require("RiveScript");
var bot;
function loadingDone(files) {
console.log("ok");
bot.sortReplies();
}
function loadingError(files, error) {
console.log("error");
}
Meteor.startup(function () {
bot = new RiveScript({utf8: true});
bot.loadDirectory("brain", loadingDone, loadingError);
});
Meteor.methods({
'user-input': function (input) {
return bot.reply("local-user", input);
}
});
如果之后仍然遇到问题,请尝试确保RiveScript在Meteor初始化之前已完全加载了答复集。查看您的代码,这应该没问题,因为
bot
变量是全局变量,并且如果没有立即调用user-input
处理程序,则该bot应该准备就绪。另一件事是验证回复是否已全部加载;打开调试模式,看看它是否打印正在解析的RiveScript文件的内容;如果不是,则可能表示它是从错误的目录加载的,并且找不到要解析的
*.rive
文件。关于node.js - 带 meteor 的RiveScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35959739/