node.js express没有收到请求

我正在使用快速Web框架,并尝试从angularjs发出$ http请求。 我传递数据请求从客户端,但服务器没有收到请求由于某些未知的原因。 请帮忙。

server.js

var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io')(server); var path = require('path'); var fs = require('fs'); app.use(express.static(path.join(__dirname, 'public'))); app.post('/readTfile',function (req,res) { console.log('i received a request'); console.log(req.body); }); server.listen(3000); 

和有angular度的HTML

 <html> <head> <title>File tream 2</title> <script type="text/javascript" src="javascripts/angular.js"></script> </head> <body> <h2>File tream 2 AngularJS</h2> <div ng-app = "mainApp"> <div id="readfile" ng-controller = "Ctrl1"> <div>{{myfiledata}}</div> </br></br> </div> </div> </body> <script> var mainApp = angular.module("mainApp",[]) mainApp.controller('Ctrl1', function ($scope, $http) { var filename = 'D:\\myapp\\public\\test.txt'; var obj = {"filename" : filename}; $scope.myfiledata = 'result'; $http({ url: '/readTfile', method: "POST", data: JSON.stringify(obj), //timeout: canceller.promise, headers: {'Content-Type': 'application/json','charset' : 'utf-8'} }).success(function(result) { console.log(result); $scope.myfiledata = 'result'; }).error(function(data, status) { console.log(data); }); }); </script> </html> 

在控制台上我没有定义req.body

我收到了一个请求

未定义

请帮我解决这个问题。

您将需要中间件从传入stream中读取POST请求的主体,并将其从JSONparsing为一个Javascript对象。 它不会自动结束req.body 。 一个简单的JSON体的通常中间件就是使用body-parser中间件 。

 const bodyParser = require('body-parser'); // other stuff here // read and parse application/json app.use(bodyParser.json()); app.post('/readTfile',function (req,res) { console.log('i received a request'); console.log(req.body); }); 

而且,为了使这个中间件工作,并自动识别您发送的JSON,您将不得不确保post设置了正确的内容types。