2016-11-07 47 views
1

您好我正在研究node.js中的nools。當我運行此程序時發生錯誤:無法運行nools

throw new Error(「Invalid expression'」+ expression +「'」)無效的表達式'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"); 
    } 
} 
+0

不是nools正在結束生命嗎? – tmslnz

回答

0

你的錯誤是在這裏:

//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$/; 

,它會工作。