Node.js 节点JS错误";无法获取";:韩元';t将搜索查询传递给函数
我正在尝试使用node、express、twit和touction构建一个基本的twitter情绪分析应用程序。它将允许用户输入一个搜索词,只要流是打开的,下面的代码将返回一个情绪分析。但是,当我输入搜索词(如“音乐”)时,我会得到错误: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)
无法获取/监视?短语=音乐 我不确定代码哪里出错了,但我认为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”路由。