【发布时间】:2018-05-22 11:41:19
【问题描述】:
我实际上在另一个更大的项目中遇到了这个问题,但是我做了一个简单的,以便于解释它
我的项目的树结构如下
demo
|____admin
| |____admin.js
|____node_modules
|
|____static
| |____bootstrap.min.css
| |____headerStyle.min.css
|
|____views
| |____admin
| | |____admin_home.ejs
| |
| |____partials
| |____admin_header.ejs
|
|____index.js
|____package-lock.json
|____package.json
请多包涵,我将贴出一些重要文件的代码
'index.js' 中的代码是这样的
let express = require('express');
let app = express();
let path = require('path');
app.use(express.static(path.join(__dirname, 'static')));
app.set('view engine', 'ejs');
app.get('/',function(req,res)
{
res.render('./admin/admin_home');
});
let admin = require('./admin/admin.js');
app.use('/admin',admin);
app.listen(9000,function(){
console.log('listening to port : 9000');
});
'admin/admin.js' 中的代码是这样的
let express = require('express');
let router = express.Router();
router.get('/',function(req,res)
{
res.render('./admin/admin_home');
});
router.get('/adminhome',function(req,res)
{
res.render('./admin/admin_home');
});
module.exports = router;
'views/admin/admin.ejs' 中的代码是这样的
<%- include('../partials/admin_header.ejs') %>
<h1>Admin Home</h1>
我在使用 express js 静态文件服务时遇到问题。
对于以下 URL,网页使用 css 文件中的所有样式呈现
http://localhost:9000
http://localhost:9000/admin
从这些路径提供服务
http://localhost:9000/bootstrap.min.css
和
http://localhost:9000/headerStyle.css
但对于以下 URL,网页以纯 html 呈现,不提供 css 样式
http://localhost:9000/admin/adminhome
错误是
Failed to load the resources: the server responded with 404
css 文件从这些路径提供
http://localhost:9000/admin/bootstrap.min.css
和
http://localhost:9000/admin/headerStyle.css
“vies/partials/admin_header.ejs”中的“Link”标签如下
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="headerStyle.css">
模块版本如下
ejs:^2.5.7
express:^4.16.2
path:^0.12.7
我的 nodejs 版本是 v8.5.0
请帮助我找到解决此问题的方法。谢谢你
【问题讨论】:
-
您的样式的
href与您正在访问的网址相关。您可以将它们设为绝对值,例如:href="/bootstrap.min.css". -
@RolandStarke 非常感谢,这很有效,将您的解决方案添加到答案中,我会接受它。再次感谢您
标签: css node.js express routing