首页 > 解决方案 > 在 Express.js 中提供资产时遇到问题

问题描述

我有以下文件结构:

- server.js
- controllers
  - [...]
- public
  - utils
  - views
    - home
      - index.html
      - js
         - index.js
      - css
          - index.css

然后在我的内部server.js,我在应用程序启动时执行此操作:

app.use(express.static( path.join(__dirname, "public") ));

这是我的“家”路线中的逻辑。

app.get("/", (req, res) => {
    const publicViews = path.join(__dirname, "public", "views");

    res.sendFile("home/index.html", { root: publicViews });
  });

index.html我导航到时呈现localhost:{port}/index.js并且index.css没有被服务器找到和返回。

这就是我在其中引用它们的方式index.html

<link rel="stylesheet" href="./css/index.css">

<script src="./js/index.js"></script>

我究竟做错了什么?

标签: javascriptnode.jsexpress

解决方案


您可以再添加一个静态文件夹

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(express.static(path.join(__dirname, 'views', 'home')));

app.use('/', index);
app.use('/users', users);

然后就可以像这样使用你的模板

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('home/index', { title: 'Express' });
});

module.exports = router;

您的资产将可以访问

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>
    </title>
</head>
<body>
    <script src="/js/index.js"></script>
</body>


推荐阅读