【发布时间】:2019-01-21 17:23:17
【问题描述】:
我正在尝试重构我的 express 应用中的某些静态路由。
首先,如果我在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 结构从 ../ 更改为 ../..,但在尝试访问 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>
为什么会这样?如何解决这个问题?谢谢
【问题讨论】: