javascript - 在路由器内快速提供静态文件
问题描述
我目前正在做一个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');
});
但这给了我一个错误。该文件不会静态地提供给客户端。这是因为快速路由器不能提供静态文件吗?也许这是一个新手错误,但任何帮助表示赞赏。第一个代码片段确实有效,但我试图让我的代码井井有条。
解决方案
在 route1.js 文件中使用 express.static 中间件,而不是简单地将文件夹路径字符串传递给路由。
推荐阅读
- apache-spark - Spark EMR 作业失败:原因:org.apache.spark.memory.SparkOutOfMemoryError: Unable to acquire 16384 bytes of memory, got 0
- c# - 带有包含空格和“/”的字符串的 Http 请求
- react-native - 如何在 react-native 中使用加速度计传感器找到方向?
- r - R:使用 id 和记录频率创建新的数据框
- active-directory - 如何修复具有静态 IP 地址的域网络上的“未识别网络”?
- r - 使用参考列总结数据框
- java - JFLEX 是否有替代 \b 和/或负前瞻的方法?
- python - 使用 Discord.py 存储每个服务器的设置
- webpack - 更改 WebPack Chunk | 的 chunk entry-module\deferred-modules Angular Builders WebPack 插件
- vb.net - 如何让用户选择图像并将图像保存为变量?