如何将一个带有Spring Boot后台的NextJS App打包到同一个war/jar文件中?

cgh8pdjw  于 2022-10-04  发布在  Spring
关注(0)|答案(1)|浏览(252)

我正在构建一个带有Spring Boot后端的NextJS应用程序。

除了静态页面,我的NextJS应用程序中还有使用getServerSideProps方法通过API调用从Spring引导后端提取数据的代码。例如:

export async function getServerSideProps(context) {
  const designations = await getDesignations();
  if (designations) {
    return {
      props: { designations },
    };
  }
}

  async function getDesignations() {
  console.log("Getting designations from server");
  try {
    const response = await axios.get("/web/designations");
    return {
      error: false,
      data: response.data,
    };
  } catch (error) {
    console.error(error);
    return {
      error: true,
      errorDetails: {
        code: error.code,
        description: "An unexpected error occurred",
      },
    };
  }
}

通过在端口8080上分别运行Spring Boot API和在端口3000上分别运行NextJS应用程序,我成功地构建了应用程序并在本地对其进行了测试。

现在,我想构建这两个组件并将其打包到一个可部署的单元中,并且更愿意在Tomcat上进行部署。

只要我使用create-react-app构建我的Reaction应用程序,我就能够使用frontend-maven-plugin构建Reaction应用程序,并将其放到Spring Boot的public目录中,这样就可以为Reaction应用程序提供服务。这一切都运行得很好。

现在,问题是为了让getServerSideProps在NextJS中工作,我知道必须有Node.js后端。

因此,我想知道如何将处于当前状态的nextjs应用程序与Spring启动后端捆绑在一起,并将其打包到相同的war/jar文件中,这样我就可以完整地发布和运行它。

谢谢,斯里拉姆

dxpyg8gm

dxpyg8gm1#

无需使用getServerSideProps()方法即可使其工作。相反,在构建中使用静态html导出来生成html,而不是js。

"scripts": {"build": "next build && next export"}

使用上面的脚本进行构建。还有一个小问题,它给出了以‘.html’结尾的网址您可以参考Nextjs部署文档从here获取更多信息

相关问题