Node.js 节点JS错误";无法获取";:韩元';t将搜索查询传递给函数

Node.js 节点JS错误";无法获取";:韩元';t将搜索查询传递给函数,node.js,express,twitter-streaming-api,Node.js,Express,Twitter Streaming Api,我正在尝试使用node、express、twit和touction构建一个基本的twitter情绪分析应用程序。它将允许用户输入一个搜索词,只要流是打开的,下面的代码将返回一个情绪分析。但是,当我输入搜索词(如“音乐”)时,我会得到错误: 无法获取/监视?短语=音乐 我不确定代码哪里出错了,但我认为MonitoringPhase没有被正确分配,或者查询没有被存储。忽略“感伤图像”,我没有包含代码,因为它不相关 app.get('/', function (req, res)

我正在尝试使用node、express、twit和touction构建一个基本的twitter情绪分析应用程序。它将允许用户输入一个搜索词,只要流是打开的,下面的代码将返回一个情绪分析。但是,当我输入搜索词(如“音乐”)时,我会得到错误:
无法获取/监视?短语=音乐 我不确定代码哪里出错了,但我认为MonitoringPhase没有被正确分配,或者查询没有被存储。忽略“感伤图像”,我没有包含代码,因为它不相关

  app.get('/',
        function (req, res) {
            var welcomeResponse = "<HEAD>" +
                "<title>Twitter Sentiment Analysis</title>\n" +
                "</HEAD>\n" +
                "<BODY>\n" +
                "<P>\n" +
                "Welcome to the Twitter Sentiment Analysis app.<br>\n" + 
                "What would you like to monitor?\n" +
                "</P>\n" +
                "<FORM action=\"/monitor\" method=\"get\">\n" +
                "<P>\n" +
                "<INPUT type=\"text\" name=\"phrase\"><br><br>\n" +
                "<INPUT type=\"submit\" value=\"Go\">\n" +
                "</P>\n" + "</FORM>\n" + "</BODY>";
            if (!monitoringPhrase) {
                res.send(welcomeResponse);
            } else {
                var monitoringResponse = "<HEAD>" +
                    "<META http-equiv=\"refresh\" content=\"5; URL=http://" +
                    req.headers.host +
                    "/\">\n" +
                    "<title>Twitter Sentiment Analysis</title>\n" +
                    "</HEAD>\n" +
                    "<BODY>\n" +
                    "<P>\n" +
                    "The Twittersphere is feeling<br>\n" +
                    "<IMG align=\"middle\" src=\"" + sentimentImage() + "\"/><br>\n" +
                    "about " + monitoringPhrase + ".<br><br>" +
                    "Analyzed " + tweetCount + " tweets...<br>" +
                    "</P>\n" +
                    "<A href=\"/reset\">Monitor another phrase</A>\n" +
                    "</BODY>";
                res.send(monitoringResponse);
            }
        });

    var tweetCount = 0;
    var tweetTotalSentiment = 0;
    var monitoringPhrase;

    function resetMonitoring() {
        monitoringPhrase = "";
    }

    function beginMonitoring(phrase) {
        var stream;
        // cleanup if we're re-setting the monitoring
        if (monitoringPhrase) {
            resetMonitoring();
        }
        monitoringPhrase = phrase;
        tweetCount = 0;
        tweetTotalSentiment = 0;

                stream = tweeter.stream('statuses/filter', {
                    'track': monitoringPhrase
                }, function (stream) {
                    console.log("Monitoring Twitter for " + monitoringPhrase);
                    stream.on('data', function (data) {
                        // only evaluate the sentiment of English-language tweets
                        if (data.lang === 'en') {
                            sentiment(data.text, function (err, result) {
                                tweetCount++;
                                tweetTotalSentiment += result.score;
                            });
                        }
                    });
                });
                return stream;

        };
app.get(“/”,
功能(req、res){
var welcomeResponse=“”+
“Twitter情绪分析\n”+
“\n”+
“\n”+
“

\n”+ “欢迎使用Twitter情绪分析应用程序。
\n”+ “您想监视什么?\n”+ “

\n”+ “\n”+ “

\n”+ “

\n”+ “\n”+ “

\n”+“\n”+”; 如果(!监视短语){ res.send(welcomeResponse); }否则{ var monitoringResponse=“”+ “\n”+ “Twitter情绪分析\n”+ “\n”+ “\n”+ “

\n”+ “Twittersphere感觉到
\n”+ “
\n”+ 关于“+监控短语+”

+ “已分析“+tweetCount+”推文…
”+ “

\n”+ “\n”+ ""; res.send(监视响应); } }); var tweetCount=0; var=0; var监控短语; 功能重置监控(){ 监视短语=”; } 功能开始监控(阶段){ var流; //如果我们正在设置监控,则进行清理 if(监控短语){ 重置监控(); } 监控短语=短语; tweetCount=0; tweet总情绪=0; stream=tweeter.stream('状态/过滤器'{ “跟踪”:监视短语 },函数(流){ log(“监视Twitter for”+监视短语); stream.on('data',函数(data){ //仅评估英语推文的情感 如果(data.lang=='en'){ 情绪(数据、文本、函数(错误、结果){ tweetCount++; TweetTotalTouction+=结果分数; }); } }); }); 回流; };
您似乎没有定义
app.get('/monitor',function(){})
路由。 此外,我看不到在任何地方调用
beginMonitoring

这有点遥不可及,但我想你想要的是更像这样的东西:

var welcomeResponse = "<HEAD>" +
    "<title>Twitter Sentiment Analysis</title>\n" +
    "</HEAD>\n" +
    "<BODY>\n" +
    "<P>\n" +
    "Welcome to the Twitter Sentiment Analysis app.<br>\n" + 
    "What would you like to monitor?\n" +
    "</P>\n" +
    "<FORM action=\"/monitor\" method=\"get\">\n" +
    "<P>\n" +
    "<INPUT type=\"text\" name=\"phrase\"><br><br>\n" +
    "<INPUT type=\"submit\" value=\"Go\">\n" +
    "</P>\n" + "</FORM>\n" + "</BODY>";
var tweetCount = 0;
var tweetTotalSentiment = 0;
var monitoringPhrase = "";

app.get('/', function (req, res) {
    res.send(welcomeResponse);
});

app.get('/monitor', function (req, res) {
    if ('phrase' in req.query && req.query.phrase != "" && req.query.phrase != monitoringPhrase) {
        // Picked new phrase to monitor
        beginMonitoring(req.query.phrase);
    }
    if (monitoringPhrase) {
        // Keep monitoring current phrase
        var monitoringResponse = "<HEAD>" +
            "<META http-equiv=\"refresh\" content=\"5; URL=http://" +
            req.headers.host +
            "/\">\n" +
            "<title>Twitter Sentiment Analysis</title>\n" +
            "</HEAD>\n" +
            "<BODY>\n" +
            "<P>\n" +
            "The Twittersphere is feeling<br>\n" +
            "<IMG align=\"middle\" src=\"" + sentimentImage() + "\"/><br>\n" +
            "about " + monitoringPhrase + ".<br><br>" +
            "Analyzed " + tweetCount + " tweets...<br>" +
            "</P>\n" +
            "<A href=\"/reset\">Monitor another phrase</A>\n" +
            "</BODY>";
        res.send(monitoringResponse);
    } else {
        // No phrase chosen, so just show the default page.
        res.send(welcomeResponse)
    }
});
var welcomeResponse=“”+
“Twitter情绪分析\n”+
“\n”+
“\n”+
“

\n”+ “欢迎使用Twitter情绪分析应用程序。
\n”+ “您想监视什么?\n”+ “

\n”+ “\n”+ “

\n”+ “

\n”+ “\n”+ “

\n”+“\n”+”; var tweetCount=0; var=0; var监控短语=”; app.get('/',函数(req,res){ res.send(welcomeResponse); }); app.get('/monitor',函数(req,res){ if('phrase'在req.query&&req.query.phrase!=“”&&req.query.phrase!=监视短语中){ //选择要监视的新短语 beginMonitoring(请求查询短语); } if(监控短语){ //保持监视当前短语 var monitoringResponse=“”+ “\n”+ “Twitter情绪分析\n”+ “\n”+ “\n”+ “

\n”+ “Twittersphere感觉到
\n”+ “
\n”+ 关于“+监控短语+”

+ “已分析“+tweetCount+”推文…
”+ “

\n”+ “\n”+ ""; res.send(监视响应); }否则{ //没有选择短语,所以只显示默认页面。 res.send(welcomeResponse) } });
如果有“无法获取”的错误,您还会看到什么其他错误?它可以工作!。。某种程度上。我现在可以搜索一个词,但是图像不会呈现,tweet计数永远保持为零,并且每5秒左右刷新一次。如果我单击“监视另一个短语”的链接,它会显示“无法获取/重置”我不确定为什么所有这些都没有呈现,您确定要将这些信息发送给客户端吗?此外,您还需要另一个app.get函数用于“/reset”路由。