Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Node.js 加载主页后服务器关闭(本地)_Node.js - Fatal编程技术网

Node.js 加载主页后服务器关闭(本地)

Node.js 加载主页后服务器关闭(本地),node.js,Node.js,我无法理解如何以及在何处使用response.end()。当我只加载一个响应时,它就工作了,但是当我尝试加载(比如)两个html文件(在我的例子中是索引和表单)时,服务器不加载任何东西。 如果我在加载索引html后放入res.end(),它会工作,但服务器会关闭 var http = require('http'); var formidable = require('formidable'); var url=require('url'); var path=require('path');

我无法理解如何以及在何处使用response.end()。当我只加载一个响应时,它就工作了,但是当我尝试加载(比如)两个html文件(在我的例子中是索引和表单)时,服务器不加载任何东西。 如果我在加载索引html后放入res.end(),它会工作,但服务器会关闭

var http = require('http');
var formidable = require('formidable');
var url=require('url');
var path=require('path');
var fs=require('fs');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  filepath=path.join(__dirname,'index.html');
  fs.readFile(filepath,null,function(err,data){
    if(err){
      res.writeHead(404);
      res.write(err+" Error");
    }
    else{
      res.write(data);
    }
    res.end();
  });
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function () {
      res.write('File uploaded');
     res.end();
    });
  } else {
    var q=url.parse(req.url,true);
    var filename=path.join(__dirname,q.pathname);
    console.log(filename);
    fs.readFile(filename,function(err,data){
      if (err) {
        res.writeHead(404);
        res.write(err+"404 Not Found");
      }
      else{
        res.write(data);
      }
      res.end();
    })
  }
}).listen(8080);

关于改进代码的其他技巧非常受欢迎:)

您能解释一下使用end()时会发生什么吗?如果使用end(),我们就不能再使用write()。
var http = require('http');
var formidable = require('formidable');
var url = require('url');
var path = require('path');
var fs = require('fs');

http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html' });

    if (req.url == '/fileupload') {
        var form = new formidable.IncomingForm();
        form.parse(req, function () {
            res.write('File uploaded');
            res.end();
        });
    } else if (req.url.length > 1) {
        var q = url.parse(req.url, true);
        var filename = path.join(__dirname, q.pathname);
        console.log(filename);
        fs.readFile(filename, function (err, data) {
            if (err) {
                res.writeHead(404);
                res.write(err + "404 Not Found");
            }
            else {
                res.write(data);
            }
            res.end();
        })
    } else {
        filepath = path.join(__dirname, 'index.html');
        fs.readFile(filepath, null, function (err, data) {
            if (err) {
                res.writeHead(404);
                res.write(err + " Error");
            }
            else {
                res.write(data);
            }
            res.end();
        });
    }
}).listen(8080);