如何在 Express 应用程序中向我的静态添加正确的方式?
How to add correct way to my static in Express app?
我的 app.js 文件中的重要信息:
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"
.
我的 app.js 文件中的重要信息:
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"
.