如何在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; 

控制台给我说:enter image description here

那么,为什么我有两个页面相同的路线,但他们中的一个运作良好,但第二次给404对静态文件?

+0

您可以在附加的图像上看到它。当你转到'/ user'时,它会从'/ img/...'加载图像。但是当你进入'/ user/user1'时,图像从'/ user/img/...'加载。检查您的资源如何被引用。 – eminlala

+0

@ ex0dm3nt但如何解决它?我正在尝试不同的方式,但无法修复它... –

+0

请问您还可以添加该“配置文件”模板的html文件吗?你有没有尝试把整个路径放进去,比如'res.render('/ templates/profile',{title:'Profile'});'或者文件路径是不是该文件? – eminlala

在您的index.hbs文件中,您有src="images/wow.png",它是图像资源的相对路径。因此,当您转到/user/user1时,它只会将/user添加到您的图像资源路径中。

而不是src="images/wow.png"尝试把src="/public/images/wow.png"src="/images/wow.png"