所以我有一个简单的Express应用程序(用快速生成器制作)具有这种结构(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文件中做的相关事情是:
var admin = require('./routes/admin');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use('/admin', admin);
我的应用就像我上面写的一样,我的'/ admin / page工作得非常棒。但是,当我尝试导航到'/ admin / process / id'时,它没有。它不会从我的公用文件夹加载任何资源。它试图从'/ admin / process / assets /'而不是'/ assets /'加载。
我完全迷失了,但我尝试过几件事。
'/admin/process'
路由获得相同的结果(不加载资源)。app.use('/admin/process', newFile);
的app.js上创建一个全新的路径文件和使用会产生相同的行为。答案 0 :(得分:2)
添加文件的绝对路径 - 的 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")