Я пытаюсь создать HTTP-сервер с GET и POST, используя 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 - Неожиданный токен)
Как я могу узнать, где эта ошибка? И, может быть, может быть много других синтаксовых ошибок.
Вам не хватает закрытия }
для функции 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;