Node.js 当url后跟/
我的静态文件设置如下:Node.js 当url后跟/,node.js,express,Node.js,Express,我的静态文件设置如下: app.use(express.static('public')); 我可以使用以下方法正确加载“mysite.com/test”页面: app.route('/test') .get(function(req,res){ res.sendFile(__dirname + '/index.html') //Actually in my model it uses res.render('pugfile.pug') rather than
app.use(express.static('public'));
我可以使用以下方法正确加载“mysite.com/test”页面:
app.route('/test')
.get(function(req,res){
res.sendFile(__dirname + '/index.html')
//Actually in my model it uses res.render('pugfile.pug') rather than send, but I don't see why that would make a difference.
})
但是,如果我加载“mysite.com/test/”页面,它仍然会加载html,但不会加载静态文件
如果我试图导航到多个分区深度的页面,例如“mysite.com/test/test/test”,也会出现同样的问题。html可以正常加载,但不能加载静态文件。我认为express静态中间件的全部目的就是解决这个问题
这似乎是我在这里错过的一件显而易见的事情。找到了答案:
您需要将/添加到所有要工作的静态文件的前面
<link href='styles/css/stylesheet.css' type='text/CSS' rel='stylesheet' />
更改为
<link href='/styles/css/stylesheet.css' type='text/CSS' rel='stylesheet' />
尝试在公共应用程序之前添加./use(express.static(“./public”);如果有效,我将在回答中解释index.html
的内容是什么?我猜您使用的是计算错误的相对路径。是的,这显然是一个路径问题,但我认为express静态中间件的全部目的是解决这个问题?html文件中的css(例如)只是简单地在public不起作用之前添加./。