2017-06-08 25 views
1

我想用GET和POST创建HTTP服务器,使用Node.js,用户将上传图像和档案。但问题是,在尝试运行服务器时,Node.js的命令行不会向我显示实际的错误,并指出不存在的某行。不会在Node.js中通过命令行出现实际错误

Server.js

var url = require("url"); 
var http = require("http"); 
var formidable = require("formidable"); 


function start(route ,handle) { 
function onRequest(request, response) { 
    var postData = ""; 
    var pathname = url.parse(request.url).pathname; 
    console.log("Request for " + pathname + " received.");  

    request.setEncoding("utf8"); 

    request.addListener("data", function(postDataChunk) { 
     postData += postDataChunk; 
     console.log("Received POST data chunk ' " + 
      postDataChunk + " ' ."); 
    }); 

request.addListener("data", function(chunk) { 
    //called when a new chunk of data was received 
}); 

request.addListener("end", function() { 
    //called when all chunks of data been received 
}); 

    request.addListener("end", function() { 
    route(handle, pathname, response, postData); 
    }); 
} 

    var formidable = require('formidable'), 
    http = require('http'), 
    sys = require('sys'); 

    http.createServer(function(req,res) { 
     if(req.url == '/upload' && req.method.toLowerCase() == 'POST') { 
      //parse a file upload 
      var form = new formidable.IncomingForm(); 
      form.parse(req,function(err,fields,files) { 
       res.writeHead(200, {'content-type' : 'text/plain'}); 
       res.write('received upload \n\n'); 
       res.end(sys.inspect({fields : fields, files : files})); 
      }); 
      return; 
     } 


     //show a file upload form 
     res.writeHead(200, {'content-type' : 'text/html'}); 
     res.end(
     '<form action = "/upload" enctype="multipart/form-data" ' + 
     'method ="post">' + 
     '<input type="text" name= "title" ><br>' + 
     '<input type ="file" name = "upload" multiple="multiple"<br>' + 
     '<input typw="submit" value="upload"' + 
     '</form>'); 
}).listen(8888); 


exports.start = start; 

唯一可以肯定的是,我知道这是在Server.js发生,因为被指出了那里。

server.js:69 - 意外的令牌)

我怎样才能知道这个错误是什么?也许可以是很多其他的sintax错误。

回答

0

您错过了start函数的关闭}。尝试添加,看看错误是否消失。这就是你的代码应该看起来如何(使用正确的缩进以便更容易地发现错误):

var url = require("url"); 
var http = require("http"); 
var formidable = require("formidable"); 

function start(route ,handle) { 
    function onRequest(request, response) { 
     var postData = ""; 
     var pathname = url.parse(request.url).pathname; 
     console.log("Request for " + pathname + " received.");  

     request.setEncoding("utf8"); 

     request.addListener("data", function(postDataChunk) { 
      postData += postDataChunk; 
      console.log("Received POST data chunk ' " + 
       postDataChunk + " ' ."); 
     }); 

     request.addListener("data", function(chunk) { 
      //called when a new chunk of data was received 
     }); 

     request.addListener("end", function() { 
      //called when all chunks of data been received 
     }); 

     request.addListener("end", function() { 
     route(handle, pathname, response, postData); 
     }); 
    } 

    var formidable = require('formidable'), 
    http = require('http'), 
    sys = require('sys'); 

    http.createServer(function(req,res) { 
     if(req.url == '/upload' && req.method.toLowerCase() == 'POST') { 
      //parse a file upload 
      var form = new formidable.IncomingForm(); 
      form.parse(req,function(err,fields,files) { 
       res.writeHead(200, {'content-type' : 'text/plain'}); 
       res.write('received upload \n\n'); 
       res.end(sys.inspect({fields : fields, files : files})); 
      }); 
      return; 
     } 

     //show a file upload form 
     res.writeHead(200, {'content-type' : 'text/html'}); 
     res.end(
     '<form action = "/upload" enctype="multipart/form-data" ' + 
     'method ="post">' + 
     '<input type="text" name= "title" ><br>' + 
     '<input type ="file" name = "upload" multiple="multiple"<br>' + 
     '<input typw="submit" value="upload"' + 
     '</form>'); 
    }).listen(8888); 
} 

exports.start = start; 
+0

不要工作太多,当我把他指出给他,并说他不期望。我不知道这里发生了什么,我尝试了一切,更改代码,评论代码的某些部分,但它不会改变任何内容,只是错误所在的行。 – Monteiro

+0

@Monteiro你把支架放在哪里?在粘贴的示例代码中绝对缺少括号,并且语法没有任何问题,所以如果在添加括号后发现抱怨,那么您将它放在错误的位置。 – Clonkex

+0

@Monteiro等等,为什么你需要'http'和'formidable'两次? – Clonkex

相关问题