javascript - 在 Express.js 中提供资源时遇到问题

标签 javascript node.js express

我有以下文件结构:

- 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") ));

这是我的“home” route 的逻辑。

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

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

同时index.html当我导航到 localhost:{port}/ 时呈现, index.jsindex.css服务器未找到并返回。

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

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

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

我做错了什么?

最佳答案

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

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;

您的 Assets 将可供访问

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

关于javascript - 在 Express.js 中提供资源时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52461262/

相关文章:

javascript - 从脚本与命令行在 Node 中分配全局变量

javascript - Node.js 在对象创建后不会终止

mysql - 关联 : how to eager load, 序列,原始 : true?

node.js - 如何在 NodeJs 响应中仅发送列表的特定属性

node.js - 在 url 中显示用户输入是否危险

javascript - PrestaShop 1.7 如何获取产品页面上的 id_product_attribute?

php - Javascript 中的警报消息

javascript - Meteor + Aldeed Autoform::如何传递父数据?

javascript - 克隆的 bootstrap-selectpicker 选择关闭 1

angular - Firebase 和外部 API 404(Firebase 函数)