提供静态文件时永远不会调用节点的 get() 函数



当我转到localhost:3000时,app.get()没有被调用。

const express = require('express');
const app = express();
app.use(express.static('public'));
app.get('/', (req, res) => {
console.log("What's up")
});
app.listen(3000, () => console.log('listening at 3000'));

除了索引,似乎没有页面调用该函数。

唯一修复它的是如果我关闭app.use(express.static('public'));但是我不能访问我的页面。

我应该怎么做得到get()与/公用文件夹工作?

如果express.static()找到了传入URL的匹配项,则它处理请求,其他任何请求都没有机会。因此,您应该只定义与public文件夹中的文件名不匹配的路由。或者,您应该只将希望express.static()匹配并处理整个请求的文件放在public文件夹中。

你要么得到一个,要么得到另一个,而不是两个。要么express.static()找到匹配并处理请求,要么它没有找到匹配,而你的其他路由有机会匹配它。

根据jfriend00的回答,我似乎不能这样做。幸运的是,我的应用程序在主页上不需要get请求,所以我用视图引擎"pug"建立了一个视图页面。这就解决了"没有页面"的问题。能够响应get请求,但如果你需要在主页上通过express.static()设置get请求,我猜你的运气不好?

const express = require('express');
const app = express();
const path = require('path')
var pug = require('pug');
app.use(express.static('public'));
app.set('views', path.join(__dirname, 'views'))
app.set('view engine','pug');
app.get('/hidden', async (req, res) => {
console.log("What's up");
res.render('hidden');
});
app.listen(3000, () => console.log('listening at 3000'));

所以只要我有一个views/hidden。在根文件夹中,我可以向它发出get请求。这对我来说很有效,但也许还有其他更有效的解决方案。

相关内容

最新更新