Node.js NodeJS+;反应+;下一个框架向路由添加路径

Node.js NodeJS+;反应+;下一个框架向路由添加路径,node.js,express,nginx,routes,next,Node.js,Express,Nginx,Routes,Next,我正在尝试设置一个NodeJS应用程序,该应用程序使用下一个框架来利用客户端和服务器端呈现。我正在尝试让客户端和服务器端呈现预先添加到它生成的路由/URL的路径。服务器端渲染似乎是通过设置express serverGET函数来侦听在路由上发出的请求,然后通过剥离预先指定的路由值将请求传递给节点来工作的。但是,在客户端上进行渲染时,即使将as=“{somestring}”添加到.js页面中的Link等元素,也会丢失预设值,因此,在渲染中引用外部下一个javascript文件时,也会丢失预设值 路

我正在尝试设置一个NodeJS应用程序,该应用程序使用下一个框架来利用客户端和服务器端呈现。我正在尝试让客户端和服务器端呈现预先添加到它生成的路由/URL的路径。服务器端渲染似乎是通过设置express server
GET
函数来侦听在路由上发出的请求,然后通过剥离预先指定的路由值将请求传递给节点来工作的。但是,在客户端上进行渲染时,即使将
as=“{somestring}”
添加到.js页面中的
Link
等元素,也会丢失预设值,因此,在渲染中引用外部下一个javascript文件时,也会丢失预设值

路由的目的是允许我们在一个域上运行多个微服务,每个微服务托管在AWS中的不同实例上,并使用目标组和ALB进行路由

基本上,我想做的是用/{somestring}替换/,我需要这不仅包括在服务器端渲染中,而且包括在客户端渲染中

URL示例: www.example.com->www.example.com/somestring

HTML呈现: www.example.com//u next/960d7341-7e35-4ea7-baf6-c2e7d457f0db/page//u app.js->www.example.com/somestring//u next/960d7341-7e35-4ea7-baf6-c2e7d457f0db/page//u app.js

编辑/更新

我已经尝试使用app.setAssetPrefix,虽然它正确地呈现了对资产的请求,并且页面加载了资产,但是资产本身是404

这是我的server.js文件:

const express = require('express');
const next = require('next');

const port = process.env.PORT || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

app
  .prepare()
  .then(() => {
    // Port
    const server = express();
    app.setAssetPrefix('test1');
    // ======
    // Routes
    // ======

    server.get('/test1/:id', (req, res) => {
      const actualPage = `/${req.params.id}`;
      const queryParams = { id: req.params.id };

      app.render(req, res, actualPage, queryParams);
    });

    server.get('/test1', (req, res) => {
      app.render(req, res, '/');
    });

    server.get('*', (req, res) => {
      handle(req, res);
    });

    // =============
    // End of Routes
    // =============

    server.listen(port, err => {
      if (err) throw err;
      console.log(`>Listening on PORT: ${port}`);
    });
  })
  .catch(ex => {
    console.error(ex.stack);
    process.exit(1);
  });

您需要自定义路由。解析传入的url并将其替换为所需内容

下面是一个示例,用于将/a解析为/b,并将/b解析为/a


即使正确呈现了下一个is资产,它似乎也无法为下一个is资产服务