Node.js Express - 访问根域时不会调用app.all("*",func)

pan*_*nga 5 javascript node.js express

我正在尝试设置一个在每个页面加载时调用的全局函数,无论它在我的网站中的位置如何.根据Express的API,我已经使用过了

app.all("*", doSomething);
Run Code Online (Sandbox Code Playgroud)

在每个页面加载时调用doSomething函数,但它并不完全有效.该函数会在每个页面加载时触发,除了基本域的页面加载(例如http://domain.com/pageA将调用该函数,但http://domain.com不会).有谁知道我做错了什么?

谢谢!

umb*_*rel 6

我知道这是一个旧的,但仍然可能对某人有用.

我认为问题可能是:

app.use(express.static(path.join(__dirname, 'public')));

var router = express.Router();

router.use(function (req, res, next) {
    console.log("middleware");
    next();
});

router.get('/', function(req, res) {
    console.log('root');
});
router.get('/anything', function(req, res) {
   console.log('any other path');
});
Run Code Online (Sandbox Code Playgroud)

在任何路径上调用中间件的地方,但是 /

这是因为express.static根据预设public/index.html/

要解决此问题,请将参数添加到静态中间件:

app.use(express.static(path.join(__dirname, 'public'), {
    index: false
}));
Run Code Online (Sandbox Code Playgroud)


Pla*_*ato 5

我打赌你放了

app.get('/', fn)
Run Code Online (Sandbox Code Playgroud)

以上

app.all("*", doSomething);
Run Code Online (Sandbox Code Playgroud)

请记住,Express会按照注册顺序执行中间件功能,直到某些东西发送响应为止