【问题标题】:http-proxy-middleware - access to the static fileshttp-proxy-middleware - 访问静态文件
【发布时间】:2017-11-13 19:00:22
【问题描述】:

我正在尝试将我的静态登录页面与 express.js 应用程序(react.js 单页应用程序)结合起来。

在我的登录页面上,我使用http-proxy-middleware 设置了代理 我的静态页面的 server.js 如下所示:

var express = require('express');
var app = express();
var path = require('path');
var proxy = require('http-proxy-middleware');

var options = {
        target: 'http://localhost:9000', // the app
        changeOrigin: true
    };
var exampleProxy = proxy(options);

app.use('/app', exampleProxy);
app.use(express.static(__dirname + '/'))

app.listen(8080);

问题是,当我到达 localhost:8080/app/ 时,我可以访问正确的 index.html,但我无法获取资源,bundle.js 正在被这样获取:http://localhost:8080/bundle.js,但显然它在 localhost:9000 上可用,而不是 8080

如何让应用访问其静态文件?

【问题讨论】:

    标签: javascript node.js express proxy http-proxy-middleware


    【解决方案1】:

    您可以使用http-proxy-middleware模块的通配符路径匹配。您可以在不传递路径参数的情况下实现app.use

    app.use(proxy('/*.js', exampleProxy));
    app.use(proxy('/api', exampleProxy));
    

    这将通过端口 9000 为您的“.js”文件提供服务。同样,您也可以通过使用此通配符匹配来提供其他资产。

    【讨论】:

    • 谢谢你,有什么神奇的方法可以照顾路线吗?它说Location "/app/template/vintage" did not match any routes,因为只有/template/vintage 存在于单个页面上。
    • 您可以在代理选项中使用 pathRewrite 属性。然后,您可以重写您想要的任何路径。 pathRewrite: {'^/api/remove/path' : '/path'}
    猜你喜欢
    • 2021-05-31
    • 2020-03-26
    • 2017-03-05
    • 1970-01-01
    • 2019-06-14
    • 2019-05-23
    • 1970-01-01
    • 2021-04-18
    • 2021-04-17
    相关资源
    最近更新 更多