node.js快速路由404问题
node.js express routing 404 issue
你好,我正在学习一些关于node.js&expers.js。到目前为止,我构建的是以下代码。我的问题是,当我请求一个页面时,例如:CCD_ 1,它确实如预期的那样返回404。同样/ip和/worker工作良好。但当我请求例如http://localhost:3000/asdf/asdf
时,浏览器返回Cannot GET /asdf/asdf
以下是来源:
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吗?
更新
此外,当我请求http://localhost:3000
时,我会得到Cannot GET /
这是我根据以下内容提出的解决方案:如何将404错误重定向到ExpressJS中的页面?
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'));
app.use(function(req, res) {
res.status(404).end('<h1>Page not found!</h1>');
});
});
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('/:page', function (req, res) {
var page = req.params.page;
switch(page) {
case 'ip':
console.log('Case -> ip');
res.send('Client ip address: ' + req.ip);
break;
case 'worker':
console.log('Case -> Worker');
res.send('Worker ' + cluster.worker.id + ', with (PID): ' + cluster.worker.process.pid + ' replyed.');
break;
}
});
console.log(''t - Worker ' + cluster.worker.id + ' up & running!');
}
相关文章:
- 无法运行php代码,有角度路由问题
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 控制器操作的路由问题
- 有UI路由问题的角度路由
- 在Node.js中将数据传递到子路由时出现问题
- Angular中的ajax调用和路由问题
- Angular1.3路由的直接URLS问题-即使html5mode为false
- 我在角度指令和角度路由中有一个问题
- 自定义 Mod 文件夹的角度路由问题
- 角度 js 路由提供程序中的问题
- 基于 id 访问 url 时存在角度路由问题
- Router.go 方法使路由页面流星变灰的问题
- Web API 应用程序中 asp.net 路由和路由前缀问题
- 在快递服务器问题中设置“邮政”路由时遇到困难
- 表达 4 + 角度 2 HTML 5 路由问题
- Expressjs 动态路由问题
- ASP.NET MVC 4 路由问题
- 角度JS和动态路由问题
- Slim Framework v3 - PUT 路由的问题
- AngularJS问题:路由后第二页未调用指令