无法在nodeJs中接收POST数据

我是nodeJs的初学者。 我只想在nodeJs中接收GET和POST数据。

我试过并成功获取GET数据,但在POST数据中,我收到错误ReferenceError:setImmediate未定义 。 当我使用$ node server.js运行server.js时,它将监听3000端口并redirect到index.html页面并通过错误。

我做了谷歌,但没有find解决我的错误的解决scheme。

我附上了代码。

server.js

 var express = require("express"); var bodyParser = require("body-parser"); var app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.get('/',function(req,res){ res.sendFile(__dirname+"/index.html"); }); app.post('/login',function(req,res){ var user_name=req.body.user; var password=req.body.password; console.log("User name = "+user_name+", password is "+password); res.end("yes"); }); app.listen(3000,function(){ console.log("Started on PORT 3000"); }) 

的package.json

  { "dependencies": { "express":"*", "body-parser":"*" } } 

的index.html

  <html> <head> <title>Simple login</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script> <script> $(document).ready(function(){ var user,pass; $("#submit").click(function(){ user=$("#user").val(); pass=$("#password").val(); $.post("http://localhost:3000/login",{user: user,password: pass}, function(data){ if(data==='done') { alert("login success"); } }); }); }); </script> </head> <body> <h1>Hello people !</h1> <input type="TEXT" id="user" size="40"><br> <input type="password" id="password" size="40"><br> <input type="button" id="submit" value="Submit"> </body> </html> 

我得到的错误:

 Started on PORT 3000 /var/www/html/nodeJs/Example-4/node_modules/express/lib/response.js:1013 setImmediate(function () { ^ ReferenceError: setImmediate is not defined at Array.onfinish [as 0] (/var/www/html/nodeJs/Example-4/node_modules/express/lib/response.js:1013:5) at listener (/var/www/html/nodeJs/Example-4/node_modules/express/node_modules/on-finished/index.js:169:15) at onFinish (/var/www/html/nodeJs/Example-4/node_modules/express/node_modules/on-finished/index.js:100:5) at callback (/var/www/html/nodeJs/Example-4/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js:55:10) at ServerResponse.onevent (/var/www/html/nodeJs/Example-4/node_modules/express/node_modules/on-finished/node_modules/ee-first/index.js:93:5) at ServerResponse.EventEmitter.emit (events.js:126:20) at ServerResponse.OutgoingMessage._finish (http.js:837:8) at ServerResponse.OutgoingMessage.end (http.js:822:10) at onend (stream.js:66:10) at EventEmitter.emit (events.js:126:20) 

古代版本的节点(v0.10之前版本)不支持setImmediate() ,所以您需要升级节点的副本才能使代码正常工作。

要升级节点,请参阅此页面,了解如何添加存储库(或使用OS X或Windows的安装程序),以使节点的副本自动保持最新。 或者,您可以提取预编译的二进制tarball到您select的位置(根据需要调整$PATH ),或者从源代码编译和安装。 对于这些选项,请参阅此页面 。