如何在Express应用程序中添加正确的方法到我的静态?
问题描述:
从我的app.js文件切记:如何在Express应用程序中添加正确的方法到我的静态?
var express = require('express');
var profile = require('./controllers/profile-controller'); //require my controller (profile-controller.js)
app.use(express.static(path.join(__dirname, 'public')));
app.use('/user', profile);
当我去“mysite.com/user” - 它工作正常,但是当我去“mysite.com/user/user1”,我的CSS和图像未加载。这里是我的控制文件:
var express = require('express');
var router = express.Router();
// route for www.mysite.com/user
router.get('/', function(req, res, next) {
res.render('profile',{ title: 'Profile' });
});
// route for www.mysite.com/user/user1
router.get('/:id([A-Za-z0-9_]{5})', function(req, res, next) {
var id = req.params.id;
res.render('profile',{ title: 'Profile' });
});
module.exports = router;
那么,为什么我有两个页面相同的路线,但他们中的一个运作良好,但第二次给404对静态文件?
答
在您的index.hbs
文件中,您有src="images/wow.png"
,它是图像资源的相对路径。因此,当您转到/user/user1
时,它只会将/user
添加到您的图像资源路径中。
而不是src="images/wow.png"
尝试把src="/public/images/wow.png"
或src="/images/wow.png"
。
您可以在附加的图像上看到它。当你转到'/ user'时,它会从'/ img/...'加载图像。但是当你进入'/ user/user1'时,图像从'/ user/img/...'加载。检查您的资源如何被引用。 – eminlala
@ ex0dm3nt但如何解决它?我正在尝试不同的方式,但无法修复它... –
请问您还可以添加该“配置文件”模板的html文件吗?你有没有尝试把整个路径放进去,比如'res.render('/ templates/profile',{title:'Profile'});'或者文件路径是不是该文件? – eminlala