我有以下文件结构:
- 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.js
和index.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/