提供静态文件时永远不会调用节点的 get() 函数
node's get() function is never called when serving static files
当我转到 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() 设置的主页上发出获取请求我猜你运气不好?
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,我就可以向它发出获取请求。这对我有用,但也许还有其他更有效的解决方案。
当我转到 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() 设置的主页上发出获取请求我猜你运气不好?
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,我就可以向它发出获取请求。这对我有用,但也许还有其他更有效的解决方案。