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(…)
。您可以在此路由处理程序中包含逻辑,以确定为用户服务的样式表。请使用
。您需要在静态资产的开始处添加
/