嗨,我正在node.js的nools上工作。当我运行这个程序时,发生了一个错误:
抛出新错误(“无效表达式”+“表达式+ '”)无效表达式'm.text = ~/^hello(\s*world)?$/‘请帮助解决此问题。
在这里,我的守则:
Server.js
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
var index = 0;
var nools = require("nools");
var flow = nools.compile(__dirname + "/server/rules.nools");
var Message = flow.getDefined("message");
var session = flow.getSession();
session.matchUntilHalt().then(
function() {
//all done!
console.log("All done!");
},
function(err) {
console.log("Error matchUntilHalt()", err.stack);
}
);
app.post('/fact', function(req, res) {
var key = req.body.key;
console.log("\n" + ++index + " New fact", key);
var newMsg = new Message(key);
session.assert(newMsg);
res.end("All OK");
});
app.get('/', function(req, res) {
res.end("Watsup! Its " + new Date());
});
app.listen(4000, function() {
console.log("Started up!");
});rools.nools
define Message {
text: '',
constructor: function(message) {
this.text = message;
}
}
//find any message that starts with hello
rule Hello {
when {
m: Message m.text = ~/^hello(\s*world)?$/;
}
then {
console.log("Hello rule fired.");
}
}
//find all messages then end in goodbye
rule Goodbye {
when {
m: Message m.text = ~/.*goodbye$/;
}
then {
console.log("Goodbye rule fired.");
}
}
define Client {
age: 0,
constructor: function(age) {
this.age = age;
}
}
rule CheckAge {
when {
// Multiple conditions in same rule
c: Client c.age > 30 && c.age < 65
}
then {
console.log("Eligible for loan");
}
}发布于 2017-05-12 21:39:54
您的错误在于:
//find any message that starts with hello
rule Hello {
when {
m: Message m.text = ~/^hello(\s*world)?$/;
}
then {
console.log("Hello rule fired.");
}
}
//find all messages then end in goodbye
rule Goodbye {
when {
m: Message m.text = ~/.*goodbye$/;
}
then {
console.log("Goodbye rule fired.");
}
}要使用的表达式在=和~之间有一个空格
m: Message m.text = ~/.*goodbye$/;
m: Message m.text = ~/^hello(\s*world)?$/;改为:
m: Message m.text =~ /^hello(\s*world)?$/;和
m: Message m.text =~ /.*goodbye$/;它会成功的。
https://stackoverflow.com/questions/40462096
复制相似问题