ExpressJS 应用没有为嵌套路由提供正确的 public 文件

ExpressJS app not serving correct public files for nested routes

背景

所以我有一个简单的 Express 应用程序(用 express-generator 制作)具有这种结构(y 只显示相关部分):

myapp
├── app.js
├─┬ public
│ └─┬ assets
│   ├── css
│   └── js
├─┬ routes
│ └── admin.js
└─┬ views
  ├── layout.pug
  ├── admin.pug
  └── process.pug

我的观点

我的layout.pug是这样的

html
    head
        title= title
        link(rel='stylesheet', href='assets/css/main.css')
        script(type="text/javascript", src="assets/js/main.js")
        block imports
    body
        /*navigation*/
        block contents

而 admin.pug 是

extends layout
block imports
    script(type="text/javascript", src="assets/js/admin.js")
block contents
    p Admin page

而process.pug是

extends layout
block imports
    script(type="text/javascript", src="assets/js/process.js")
block contents
    p Process page
    p= id

我的路线

我有一个路由文件,admin.js:

var express = require('express');
var router = express.Router();

router.get('/process/:id', function(req, res, next) {
    res.render('process', {
        title: 'process page',
        id: req.params.id
    });
}

router.get('/', function(req, res, next) {
    res.render('admin', {
        title: 'admin page'
    });
}

module.exports = router;

我的app.js

我在 app.js 文件中做的相关事情是:

var admin = require('./routes/admin');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use('/admin', admin);

问题

我的应用程序正如我上面所写的那样,我的'/admin/页面运行得非常好。但是当我尝试导航到“/admin/process/id”时,它没有。它不会从我的 public 文件夹中加载任何资源。它尝试从“/admin/process/assets/”而不是“/assets/”加载。

我试过的

我对此完全迷失了,但我已经尝试了几件事。

添加文件的绝对路径 - layout.pug

link(rel='stylesheet', href='/assets/css/main.css')
script(type="text/javascript", src="/assets/js/main.js")

admin.pug

script(type="text/javascript", src="assets/js/admin.js")

process.pug

script(type="text/javascript", src="/assets/js/process.js")