【问题标题】:How to server nodeJS / react app from base location?如何从基本位置服务器 nodeJS / react 应用程序?
【发布时间】:2021-08-18 10:27:27
【问题描述】:

我正在尝试配置一个 nodeJS express 应用程序,该应用程序处理一个 react 静态构建,以便从我的 VPS (nginx) 内的某个位置运行。

到目前为止,我已经设法像这样配置位置:

  • 在 webpack 构建中添加了路径:
  output: {
    path: path.join(__dirname, '/client/public/dist/'),
    filename: 'main.js',
    publicPath: "/location/",
  },
  • 添加了快速服务器的路径:
app.use("/location/",  express.static(path.join(__dirname, './client/public/dist/')))
  • 将位置添加到反应路由器,添加到每个路由

  • 将位置添加到 nginx proxy_pass:

   location /location{
        proxy_pass http://localhost:5002/location;
    }

我面临的问题是,如果我有子路径(例如 /location/page1),如果我刷新浏览器,我会收到错误 cannot get /location/page1

我尝试将快递服务器修改为app.use("/location/*", ) app.use("*"), 但我得到 Uncaught SyntaxError: Unexpected token '

这是 index.html 的问题吗?有没有更简单的方法从定位路径运行应用程序?

【问题讨论】:

    标签: node.js reactjs express


    【解决方案1】:
    location /location/ {
            rewrite ^/location/(.*) /$1 break;
            proxy_pass http://localhost:5008/yourPath/;
    }
    

    不要在 express 中添加 * 路径,而是像我在 Nginx 文件中显示的那样添加上面的路径,我已经在 Nginx 本身中为我的项目尝试过这个。

    这里 /location/ 可以是您选择的任何用户可以看到的地方,但在代理通道中,它应该是您通过应用程序提供服务的确切位置,例如,面向用户的路由,即 /location/ 可以是 / test/ 这就是用户看到的,但在那之后,路由可以是您的 /location 从您的应用程序提供服务的地方。

    如果您对解决方案有歧义,请告诉我,我可以向您展示并解释。谢谢。

    【讨论】:

    • 非常感谢!像魅力一样工作!
    • 现在我已将快速位置更新为“/”,而不是“/location”。
    • 我唯一注意到的是,如果我尝试刷新 /location/page,则会收到 cannot get "/page" 错误。你知道如何解决这个问题吗?
    • http://localhost:5002/ 的快速服务器将请求作为/ 默认路由提供服务,或者是否有类似/location 的路径?
    • 没错,express 服务器只处理/ 请求。非常感谢您的帮助!我已将快速服务器更新为仅服务器 / 位置,具有重写位置的 nginx 配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多