【问题标题】:Express serve static files inside Router在路由器内快速提供静态文件
【发布时间】:2021-12-10 00:18:05
【问题描述】:

我目前正在处理一个nodejs 项目,我有一个简单的问题。我想将我的node_modules 文件夹中的一些库静态地提供给客户端(可能很愚蠢,但与问题无关),但我不想用所有这些静态地丢弃我的主服务器 JS 文件像这样提供文件:

const express = require('express');
const app = express();

// Imports here
app.use('/assets/lib/bootstrap', './node_modules/bootstrap/dist');
app.use('/assets/lib/axios', './node_modules/axios/dist');
app.use('/assets/lib/aos', './node_modules/aos/dist');

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

如果我有 10 多个导入,这会破坏我的服务器 JS 文件,我希望尽可能保持干净。我想知道为什么这个选项不起作用:

./routes/route1.js:

const express = require('express');
const router = express.Router();
const path = require('path');

// Imports here
router.use('/bootstrap', path.resolve(__dirname, 'node_modules/aos/dist'));
router.use('/axios', path.resolve(__dirname, 'node_modules/aos/dist'));
router.use('/aos', path.resolve(__dirname, 'node_modules/aos/dist'));

// path to node_modules file is not the problem here

module.exports = router

在我的主服务器 JS 文件中:

const express = require('express');
const app = express();
const route1 = require('./routes/route1');

// Imports here
app.use('/assets/lib', route1); 

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

但这给了我一个错误。该文件不会静态地提供给客户端。这是因为快速路由器不能提供静态文件吗?也许这是一个新手错误,但任何帮助表示赞赏。第一个代码 sn-p 确实有效,但我试图让我的代码井井有条。

【问题讨论】:

  • 关心发布错误吗? Expresse 可以提供静态文件...
  • @akaphenom 客户端无法访问 URL。而 express 返回默认的 CAN'T GET /..... 错误。
  • 我认为你错误地使用了路由器。您正在传递静态文件的路径,您需要一个函数来返回静态文件。正如@neond 所说-您可以尝试静态中间件...

标签: javascript node.js express routes middleware


【解决方案1】:

在 route1.js 文件中使用 express.static 中间件,而不是简单地将文件夹路径字符串传递给路由。

【讨论】:

    最近更新 更多