Node.js & Express:未找到动态路线上的静态资产
Node.js & Express: Static assets on dynamic routes aren't found
有点困惑 Node.js 如何提供静态资产。我正在使用最新的 Express、EJS 和 Node。我的应用程序中有以下路线(为简洁起见删除了一些代码,还有其他路线没有参数)。我搜索了 S.O。对于类似的问题,但由于有两个参数,我觉得我的问题可能有所不同。
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
...
app.get('/:userid?/:catid?', function(req, res){
... some db queries here ...
res.render('pages/listing',{
siteConfig: nconf.get("siteConfig"),
pageTitle: pageTitle,
results:dbResults
});
}
在我的 EJS 视图模板中,我有如下资产路径:
<img src="/images/static_logo.png" />
<script src="/bower_components/modernizr/modernizr.js"></script>
<link rel="stylesheet" href="/css/app.min.css" />
当我将两个 id 都传递给此路由时出现问题,比方说 localhost/763/201,我的静态资产似乎没有呈现。无论路由如何,所有资产都以路径 http://localhost/763/css/style.css (Only the first ID). Ideally I want it to point to http://localhost/css/style.css 开头。
我尝试使用 res.sendfile 删除 EJS 文件中的前导斜杠,并将资产硬编码为完全绝对路径,但第一个和第二个选项不起作用,第三个选项不理想。
请注意,我自己的项目代码包含以下 public 前没有斜杠的代码:
app.use(express.static(path.join(__dirname, 'public')));
可能值得尝试在您的斜杠中删除并尝试一下。
有点困惑 Node.js 如何提供静态资产。我正在使用最新的 Express、EJS 和 Node。我的应用程序中有以下路线(为简洁起见删除了一些代码,还有其他路线没有参数)。我搜索了 S.O。对于类似的问题,但由于有两个参数,我觉得我的问题可能有所不同。
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
...
app.get('/:userid?/:catid?', function(req, res){
... some db queries here ...
res.render('pages/listing',{
siteConfig: nconf.get("siteConfig"),
pageTitle: pageTitle,
results:dbResults
});
}
在我的 EJS 视图模板中,我有如下资产路径:
<img src="/images/static_logo.png" />
<script src="/bower_components/modernizr/modernizr.js"></script>
<link rel="stylesheet" href="/css/app.min.css" />
当我将两个 id 都传递给此路由时出现问题,比方说 localhost/763/201,我的静态资产似乎没有呈现。无论路由如何,所有资产都以路径 http://localhost/763/css/style.css (Only the first ID). Ideally I want it to point to http://localhost/css/style.css 开头。
我尝试使用 res.sendfile 删除 EJS 文件中的前导斜杠,并将资产硬编码为完全绝对路径,但第一个和第二个选项不起作用,第三个选项不理想。
请注意,我自己的项目代码包含以下 public 前没有斜杠的代码:
app.use(express.static(path.join(__dirname, 'public')));
可能值得尝试在您的斜杠中删除并尝试一下。