node.js - ExpressJs 服务多个静态文件夹不工作

标签 node.js express

我想像这样构建我的公用文件夹:

 - public
     -  frontend
     -  backend
     -  assets   # to serve common css, and js static files for backend/frontend

如果请求以/admin 为前缀,那么我想为后端文件夹提供服务,否则为前端文件夹 这是我试过的

app.use(function(req, res, next) {
    if (req.url.match('^\/admin')) {
        express.static(__dirname + '/public/admin')(req, res, next);
    } else {
        express.static(__dirname + '/public/frontend')(req, res, next);
    }
});

app.use(express.static(__dirname + '/public/assets'));

app.get('*', function(req, res, next) {
    if (req.url.match('^\/admin')) {
        res.sendFile(__dirname + '/public/admin/app/views/index.html');
    } else {
        res.sendFile(__dirname + '/public/frontend/app/views/index.html');
    }
});

但我无法从 assets 文件夹中获取静态文件,它一直给我 index.html。 使它起作用的正确方法是什么?非常感谢

最佳答案

如果我正确理解了您的问题,我认为这样的方法更合适。

app.use('/admin', express.static('public/backend'));
app.use('/', express.static('public/frontend'));

关于node.js - ExpressJs 服务多个静态文件夹不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866892/

相关文章:

javascript - Node JSON https 请求变得未定义

node.js - 人人网与nodejs的API

node.js - 如何让 Stylus 与 CoffeeScript 中的 Express 和 Connect 一起工作

javascript - 可以在模板中缩进行而不缩进内容吗?

node.js - 为什么 Puppeteer 需要 --no-sandbox 在 Cloud Functions 中启动 Chrome

node.js - 使用node.js(带有express)作为静态网络服务器

node.js - 使用 typescript 2 使用 sequelize 模型扩展 express 请求对象

javascript - Passport.js 自定义回调传递参数

node.js - 一起运行时 nodejs : Tests pass individually, 失败(mocha、sinon、aws-sdk)

javascript - 从node.js googledrive api返回结果