【发布时间】: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