Javascript 为给定目录路径中的每个目录调用express.static
我喜欢创建一个Express应用程序,为多个Vue.js应用程序(生产文件)提供服务,但由于我只需要处理html、js和css文件,这也可能是另一种技术 我目前有这个目录结构Javascript 为给定目录路径中的每个目录调用express.static,javascript,express,Javascript,Express,我喜欢创建一个Express应用程序,为多个Vue.js应用程序(生产文件)提供服务,但由于我只需要处理html、js和css文件,这也可能是另一种技术 我目前有这个目录结构 . | ├── Express App / Fileserver │ └── app.js | ├── base | ├── index.html | └── js | └── jsFile.js │ └── apps ├── appOne | ├── index.html
.
|
├── Express App / Fileserver
│ └── app.js
|
├── base
| ├── index.html
| └── js
| └── jsFile.js
│
└── apps
├── appOne
| ├── index.html
| └── js
| └── jsFile.js
└── appTwo
├── index.html
└── js
└── jsFile.js
我在一个单独的目录中有一个基本应用程序,在应用程序目录中有多个应用程序。为了提供这些应用程序,我尝试进入Express文件服务
const express = require('express');
const path = require('path');
const app = express();
const router = express.Router();
app.use(express.static(path.resolve(__dirname, '../base')));
app.use(express.static(path.resolve(__dirname, '../apps')));
router.get('/', function(req, res) {
res.sendFile(path.resolve(__dirname, '../base/index.html'));
});
router.get('/apps/:appName', function(req, res) {
res.sendFile(
path.resolve(__dirname, `../apps/${req.params.appName}/index.html`)
);
});
app.use('/', router);
app.listen(3000, function() {
console.log('Fileserver listening on port 3000');
});
当我呼叫http://localhost:3000/
基本应用程序得到正确的服务
调用http://localhost:3000/apps/appOne/
AppOne的.js文件找不到
为了解决这个问题,我可以将这个应用程序目录也设置为静态app.use(express.static(path.resolve(_dirname,../apps/appOne))代码>但我正在寻找一种更具活力的方式
有没有办法使apps目录中的每个app目录都是静态的?或者我必须在apps目录中循环并为找到的每个路径调用express.static
函数吗
我已经尝试通过将express.static
调用更改为一次调用,在一次运行中使所有内容都保持静态
app.use(express.static(path.resolve(uu dirname,“../”))代码>
但是我的基础应用程序也坏了。似乎我必须指定我想要提供的每个应用程序。顺便说一下,生成的Vue发行版已经在其index.html文件中使用了绝对路径
我当前针对每个应用的解决方案:
fs.readdirSync(path.resolve(__dirname, '../apps')).forEach(appName => {
app.use(express.static(path.resolve(__dirname, `../apps/${appName}`)));
});
但我希望有人能提供更好的解决方案:)我建议将“base”和“apps”文件夹放在一个根文件夹中,并让express将此根文件夹用于其静态资产。可能重复的是,我已经尝试了app.use(express.static(path.resolve(u dirname,../))代码>但我的基本应用程序也会中断。@生成的Vue发行版已使用绝对路径。和path.resolve
将相对路径转换为绝对路径我建议将“base”和“apps”文件夹放在一个根文件夹中,并让express将此根文件夹用于其静态资产。可能重复的是我已尝试app.use(express.static(path.resolve(u dirname,../))代码>但我的基本应用程序也会中断。@生成的Vue发行版已使用绝对路径。和path.resolve
将相对路径转换为绝对路径