React Redux bundle.js 被抛出到请求中

IT技术 javascript reactjs redux react-router
2021-05-18 09:46:01

我的 React Redux SSR 应用程序如何处理站点导航有问题 我有一个列表页面的路由,它将根据 URL 中的参数显示不同的数据。

Routes.js 文件

export default [
  {
    ...App,
    routes: [
      {
        ...HomePage,
        path: '/',
        exact: true
      },
      {
        ...ListPage,
        path: '/list/:id',
        exact: true
      },

在运行快速后端的 Index.JS 文件中,我遍历路由目录以查看与请求路径匹配的路径...

const app = express();
app.use(express.static('public'));
app.get('*', (req, res) => {
  const store = createStore(req);

  const promises = matchRoutes(Routes, req.path)
    .map(({ route }) => {
      console.log("Looking at Route: ", route);
      if (route.loadData) {
        const params = req.path.split('/');
        console.log('my params are: ', params)
        return route.loadData(store, params[2])

      }else{
        return null
      }
    })
    .map(promise => {
      if (promise) {
        return new Promise((resolve, reject) => {
          promise.then(resolve).catch(resolve);
        });
      }
    });

  Promise.all(promises).then(() => {
    const context = {params: req.params};
    const content = renderer(req, store, context);

    if (context.url) {
      return res.redirect(301, context.url);
    }
    if (context.notFound) {
      res.status(404);
    }

    res.send(content);
  });
});

我的理解是应该只迭代 2 件事,App 组件 Route 和 ListPage 组件 Route,然后它调用各自的 loadData() 函数,网站继续运行。但是,在它通过前 2 条路由并使用相关信息填充我的页面后,Index.js 文件再次被调用并遍历路由,但这一次不是让用户尝试访问它的 URL 将其替换为“ bundle.js”,我不明白这里发生了什么。这是我得到的输出,我希望只有输出的上半部分。

控制台输出

注意 此图像取自我的控制台(我将客户端和服务器端输出合并在 1 个窗口中)下面我将包含我的配置文件的屏幕截图

当然,我的代码并不期望这是一条路径,应用程序会中断,因为它试图获取 ID 为“bundle.js”而不是标准数字的列表上的信息。

有人可以向我解释我的代码在这里做错了什么,或者如果这是我解决此问题的方式,我将不胜感激。

我目前正在尝试创建我的第一个 SSR 应用程序,所以我是这项技术的新手,所以我可能会遗漏一些明显的东西。

配置文件

1个回答

经过进一步调查,我注意到我可以在控制台中看到的文件 bundle.js 指的是某个位置的文件,/list/bundle.js但我的包实际上在我的公共目录中,所以我不得不修改脚本 Src 以便它引用http://localhost:3000/bundle.js之后我做了这个应用程序的功能它应该如何。