表示不提供来自路由器

时间:2017-12-08 08:56:59

标签: css node.js express routing

我实际上是在另一个更大的项目中面对这个问题但是,我做了一个简单的问题以便轻松解释

我的项目的树结构如下

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>

我遇到快速js静态文件服务的问题。

对于以下网址,网页使用css文件中的所有样式进行渲染

http://localhost:9000
http://localhost:9000/admin

从这些路径提供服务

http://localhost:9000/bootstrap.min.css

http://localhost:9000/headerStyle.css

但是对于以下网址,网页使用普通的html呈现,而不提供css syles

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

请帮助我找到解决此问题的方法。谢谢

2 个答案:

答案 0 :(得分:2)

罗兰斯塔克引用,这些风格的hrefs与我正在访问的网址相关。我可以通过添加类似

的'/'来使它们成为绝对的
href="/bootstrap.min.css"

答案 1 :(得分:0)

您应该在index.js

中添加一行
app.set('views', path.join(__dirname, 'views'));