2016-11-07 19 views
1

こんにちは私はnode.jsのnoolsに取り組んでいます。このプログラムを実行すると、エラーが発生しました:noolsを実行できません

throw new error( "無効な式 '+式+"' ")無効な式 'm.text =〜/^hello(\ s * world)?$/'plsはこの問題を解決するのに役立ちます。ここで

私のコード:

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

ノーオールズはlife'dの終わりではありませんか? – 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$/; 

、それが動作します。

関連する問題