node.js - `express.static`在`express-promise-router`中不起作用
问题描述
我正在尝试在我的快速应用程序中重构某些静态路由。
首先,如果我在里面跟随index.ts
,它会工作得很好:
import * as express from 'express';
const app = express();
app.use('/something', express.static(path.join(__dirname, '../', 'something')));
但是我想让我的代码更整洁,所以我需要重构为单独的路由处理程序文件,即我创建route/something.ts
用于处理路由到/something
. 所以我做了以下事情:
在里面index.ts
,它变成:
import * as express from 'express';
const app = express();
app.use('/something', require('./route/something.ts);
和里面./route/something.ts
:
import * as express from 'express';
import PromiseRouter from 'express-promise-router';
const router = PromiseRouter();
router.route('/')
.get(express.static(path.join(__dirname, '../../', 'something')));
module.exports = router;
请注意,我已经将 dir 结构从../
to更改为,../..
但在尝试访问 api 端点时它仍然无法正常工作,localhost:3000/something/static.jpg
它返回错误
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /something/static.jpg</pre>
</body>
</html>
为什么会这样?如何解决这个问题?谢谢
解决方案
此行(在 中route/something.ts
):
router.route('/')
.get(express.static(path.join(__dirname, '../../', 'something')));
应改为:
router.use('/', express.static(path.join(__dirname, '../../', 'something')));
你也不需要使用express-promise-router
,你可以使用创建路由器const router = express.Router()
。
有关这方面的更多信息,请参阅路由文档。
推荐阅读
- java - 不断下降的线
- pointers - @H 和 @H[0] 之间的区别
- python - Zip 和 Zip Longest
- macos - 如何重置 macOS 邮件中的 HTML 缓存?
- android - 您可能没有合适的应用程序来查看此内容错误
- azure - 远程访问 Azure Postgres 数据库
- python-3.x - 挣扎于发布多部分/表单数据,包括文件和属性
- node.js - 节点JS | 赫罗库 | MongoDB 地图集 | 如何确保只有我的应用可以访问我的后端?
- rust - 临时值被释放不一致
- javascript - 每个左坐标仅检测一次 Raphael 中的对齐网格