【问题标题】:`express.static` not working inside `express-promise-router``express.static`在`express-promise-router`中不起作用
【发布时间】: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>

为什么会这样?如何解决这个问题?谢谢

【问题讨论】:

    标签: node.js express promise


    【解决方案1】:

    这一行(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

    【讨论】:

    • 如果我想使用express-promise-router 怎么办?因为我已经使用该库实现了数百个端点,只是为了保持一致性
    • @xcode 你可以继续使用它,我上面建议的修复应该仍然有效。
    • 我的意思是如何在router = Promiserouter() 中使用express.static 而不是使用router = express.Router()
    • @xcode 您可以像使用 Express 路由器 (express.Router) 一样使用 express.static(...)PromiseRouter。有关这方面的更多信息,请参阅the express-promise-router documentation
    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 2019-08-18
    • 2022-01-02
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多