我正在尝试在我的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;
请注意,我已经将目录结构从../
更改为../..
,但是在尝试访问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>
为什么会这样?如何解决呢?谢谢
答案 0 :(得分:0)
此行(在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()
创建路由器即可。
有关更多信息,请参见routing docs。