Javascript 为给定目录路径中的每个目录调用express.static

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应用程序,为多个Vue.js应用程序(生产文件)提供服务,但由于我只需要处理html、js和css文件,这也可能是另一种技术

我目前有这个目录结构

.
|
├── 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
将相对路径转换为绝对路径