javascript - 在 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>
我究竟做错了什么?
解决方案
您可以再添加一个静态文件夹
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>
推荐阅读
- windows - 找不到监控预装 Win10 应用程序卸载的方法
- google-analytics - 我如何让 GA 跟踪另一个站点上发生的事件?
- javascript - 如何将设置的字符串值复制到剪贴板?
- javascript - React Native / Firebase Messaging - 永远不会发送消息/通知
- c# - 在没有委托的情况下在 C# 中使用方法作为参数?
- python - 即使设置了种子,LogisticRegressionCV 也会给出不同的答案
- java - android将字符串解析为日期 - 日期不正确
- r - 没有适用于“mutate_”的方法应用于类“c('integer','numeric')”的对象
- html - 如何设置 iframe 以填充页面宽度?
- terraform - 使用 Terraform 制作 Azure Logic Apps,有什么限制?