Здравствуйте, я следую некоторым учебникам относительно node.js & experss.js. Что я создал до сих пор, это следующий код. Моя проблема заключается в том, что когда я запрашиваю такую страницу, как: http://localhost:3000/test
, она возвращает 404, как ожидалось. Также/ip и/работник работают нормально. Но когда я прошу, например http://localhost:3000/asdf/asdf
браузер возвращает Cannot GET /asdf/asdf
node.js express routing 404 issue
Вот источник:
var cluster = require('cluster');
if (cluster.isMaster) {
var cpuCount = require('os').cpus().length;
var workers = [];
for (var i = 0; i < cpuCount; i++) {
workers[i] = cluster.fork();
console.log('\t - Starting Worker (PID): ' + workers[i].process.pid);
}
console.log('\n\t - ' + cpuCount + ' Workers started.\n');
cluster.on('exit', function (worker){
console.log('\t - Worker ' + worker.id + ' with (PID): ' + worker.process.pid + ' died!');
for (var i = 0; i < workers.length; i++) {
if (worker.process.pid === workers[i].process.pid) {
workers.splice(i, 1);
console.log('\t - Workers alive: ' + workers.length);
}
}
for (var i = 0; i < cpuCount - workers.length; i++) {
workers.push(cluster.fork());
console.log('\t - Starting Worker with (PID): ' + workers[workers.length - 1].process.pid);
}
});
} else {
var express = require('express');
var app = express();
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000);
app.get('/:page', function (req, res) {
var page = req.params.page;
switch(page) {
case '':
console.log('Page: ' + page);
res.sendfile(__dirname + '/index.html');
break;
case 'ip':
res.send('Client ip address: ' + req.ip);
break;
case 'worker':
res.send('Worker ' + cluster.worker.id + ', with (PID): ' + cluster.worker.process.pid + ' replyed.');
break;
default:
res.status(404).send('<h1>Page not found!</h1>');
}
});
console.log('\t - Worker ' + cluster.worker.id + ' up & running!');
}
Может кто-то пожалуйста, объясните, почему оно не возвращает 404 и то, что я должен сделать, чтобы вернуть 404?
UPDATE
Кроме того, когда я прошу http://localhost:3000
я Cannot GET /