首页 > 解决方案 > 在路由器内快速提供静态文件

问题描述

我目前正在做一个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');
});

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

标签: javascriptnode.jsexpressroutesmiddleware

解决方案


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


推荐阅读