如何解决提供静态文件时,从不调用节点的 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() 使用 /public 文件夹?
解决方法
如果 express.static()
找到传入 URL 的匹配项,则它会处理请求,其他任何事情都没有机会。因此,您应该只定义与 public
文件夹中的文件名不匹配的路由。或者,您应该只将文件放在 public
文件夹中,您希望 express.static()
匹配并处理整个请求。
您可以选择其中一个,而不是两者。 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.pug,我就可以向它发出 get 请求。这对我有用,但也许还有其他更有效的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。