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')));

可能值得尝试在您的斜杠中删除并尝试一下。