Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点测试和console.log问题_Javascript_Node.js - Fatal编程技术网

Javascript 节点测试和console.log问题

Javascript 节点测试和console.log问题,javascript,node.js,Javascript,Node.js,我从node:up and running一书中设置了一个简单的节点服务器和测试程序。当我用debug跟踪它时,它似乎工作得很好,但我很好奇为什么console.log不向终端输出任何东西 服务器,app.js var express = require('express'); var http = require('http'); var app = express(); app.set('port', process.env.PORT || 8000) app.use(express.u

我从node:up and running一书中设置了一个简单的节点服务器和测试程序。当我用debug跟踪它时,它似乎工作得很好,但我很好奇为什么console.log不向终端输出任何东西

服务器,app.js

var express = require('express');
var http = require('http');

var app = express();
app.set('port', process.env.PORT || 8000)

app.use(express.urlencoded());
app.use(express.json());
app.use(express.logger('dev'));


var tweets = [];

app.get('/', function (req, res) {
    res.send('Welcome to Node Twitter');
});

app.post('/send', function(req, res) {
if (req.body && req.body.tweet) {
    tweets.push(req.body.tweet);
    res.send({status:"ok", message:"Tweet received"});
} else {
    // no tweet ?
    res.send({status:"nok", message:"No tweet received"});
}
});

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

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
var http = require('http');
assert = require('assert');

var opts = {
host: 'localhost',
port: 8000,
path: '/send',
method: 'POST',
headers: {'content-type':'application/x-www-form-urlencoded'}   
}   

var req = http.request(opts, function(res) {
res.setEncoding('utf8');

console.log("Sending test");

var data = "";
res.on('data', function(d) {
    data += d;
})



res.on('end', function() {
    assert.strictEqual(data, '{"status":"ok", "message":"Tweet received"}');
    console.log("test");

})
})

req.write('tweet=test')
req.end
测试脚本,Test.js

var express = require('express');
var http = require('http');

var app = express();
app.set('port', process.env.PORT || 8000)

app.use(express.urlencoded());
app.use(express.json());
app.use(express.logger('dev'));


var tweets = [];

app.get('/', function (req, res) {
    res.send('Welcome to Node Twitter');
});

app.post('/send', function(req, res) {
if (req.body && req.body.tweet) {
    tweets.push(req.body.tweet);
    res.send({status:"ok", message:"Tweet received"});
} else {
    // no tweet ?
    res.send({status:"nok", message:"No tweet received"});
}
});

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

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
var http = require('http');
assert = require('assert');

var opts = {
host: 'localhost',
port: 8000,
path: '/send',
method: 'POST',
headers: {'content-type':'application/x-www-form-urlencoded'}   
}   

var req = http.request(opts, function(res) {
res.setEncoding('utf8');

console.log("Sending test");

var data = "";
res.on('data', function(d) {
    data += d;
})



res.on('end', function() {
    assert.strictEqual(data, '{"status":"ok", "message":"Tweet received"}');
    console.log("test");

})
})

req.write('tweet=test')
req.end

需要一些建议。

事件
end
永远不会被触发,因为您没有调用函数
req.end
。您保持http请求/连接处于打开状态。你永远不会完成它

请尝试:

req.end();
想想以下两者之间的区别:

console.log('HI');
console.log;

这样行吗
console.log('Express server监听端口'+app.get('port'))什么控制台-有两个应用程序(服务器和测试客户端),哪一个没有输出?此外,express还有自己的http服务器抱歉,test.js文件中的console.log语句不起作用。app.js中的那个很好用,谢谢。愚蠢的错误。