node.js - express中一个诡异的现象
高洛峰
高洛峰 2017-04-17 11:15:27
[Node.js讨论组]
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
// app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

/// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

上面是用express初始化的代码,下面是index.js的代码

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res) {
  console.log("index") ;
  res.render('index');
});

module.exports = router;

我访问http://localhost:3000/的时候直接返回的是public/index.html,没有通过router,也就是说console.log('index')这句没打印出来,如果把static那句放到路由设置后面的话就有打印,不知道是怎么回事?麻烦大家帮忙解答一下

追加:如果我把public文件夹底下的index.html文件移除掉就可以通过路由了,难道express会先查看public底下有没有index.html文件吗?如果有就加载没有的话再走路由?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
巴扎黑

app.use('/', routes); 放到 app.use(express.static(path.join(__dirname, 'public'))); 前面,express 是按顺序匹配路由的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号