Node.js expressjs不提供静态文件
我已经登上了这条路Node.js expressjs不提供静态文件,node.js,express,Node.js,Express,我已经登上了这条路 var path = require('path'); var express = require('express'); var app = express(); var admin = express(); admin.use(express.static(path.join(__dirname, 'public/'))); // mount admin path app.use('/admin', admin); 然后我定义了一些路线,例如 admin.get('
var path = require('path');
var express = require('express');
var app = express();
var admin = express();
admin.use(express.static(path.join(__dirname, 'public/')));
// mount admin path
app.use('/admin', admin);
然后我定义了一些路线,例如
admin.get('/jobs', function(req, res){
res.render('jobs/index');
});
admin.get('/jobs/create', function(req, res){
res.render('jobs/create');
});
在第一个路由中,静态文件如js、css、图像加载时没有问题。
但在第二种情况下,它不加载文件
在这样的视图中加载的文件
<link rel="stylesheet" href="styles/css/main.css">
注意:样式目录位于我的工作目录的公用文件夹下
那么问题是什么呢?我做错了什么?首先:app.use(express.static(path.join('public'))代码>
然后href=“/styles/css/main.css”
希望有帮助。静态中间件被添加到admin
express实例中,该实例安装在/admin
路径的主app
中。这意味着除了那些匹配的/admin
之外,它永远不会被调用。将中间件移动到主应用程序实例
app.use(express.static(path.join(__dirname, 'public')))
不我修改了代码。在public
之后添加了斜杠,请查看。仍然不起作用。公共目录可以访问/path中的静态文件。因此,您在末尾添加的斜杠没有任何作用。您必须从视图访问绝对路径/公共路径。编辑的答案即使对于第一条路线也不起作用。这就是问题所在。我想为admin
和front
提供不同的静态文件。这就是为什么我添加了不同的静态文件夹。真正有趣的是,它适用于/admin/jobs
但不适用于/admin/jobs/create
。它适用于/admin/jobs
,而不适用于/admin/jobs/create
的原因是您使用的是样式表的相对路径。因此,对于/admin/jobs
它解析为/admin/styles/css/main.css
(有效),而对于/admin/jobs/create
它解析为/admin/jobs/styles/css/main.css
(无效)。您可以改为使用绝对路径/admin/styles/css/main.css
,即
,这应该是可行的。或者,如果您总是想从公共url/styles/css/main.css
提供样式表,那么只需按照app.get('/styles/css/main.css',(req,res)的行为其创建一个单独的路由即可=>res.sendFile(…)
。您可以在此路由处理程序中包含逻辑,以确定为用户服务的样式表。请使用
。您需要在静态资产的开始处添加/
。