如何在本地主机 (NextJS) 上运行 Web 应用程序的 nrwl/nx 生产版本

Dar*_*o K 6 reactjs next.js nrwl-nx

有没有办法在本地主机上运行 nrwl/nx next.js 构建的应用程序进行生产?

我尝试在下一个应用程序的文件夹中使用npm i -g serveand after ,但该应用程序显示没有样式和导航。serve -s

似乎只有index.html 存在。

我是否必须使用 Vercel 进行部署,或者是否有办法在本地主机上测试捆绑应用程序的性能?

Gh0*_*05d 1

为此,您需要一个自定义服务器。在项目的根目录中创建一个server.js文件。它应该看起来像这样:

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

const PORT = parseInt(process.env.PORT, 10) || 3364;
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handle = app.getRequestHandler();

app.prepare().then(() => {
  const server = express();

  server.get("*", (req, res) => handle(req, res));

  server.listen(PORT, err => {
    if (err) throw err;
    console.log(` => Ready on http://localhost:${PORT}`);
  });
});
Run Code Online (Sandbox Code Playgroud)

然后确保您的package.json具有以下脚本:

{
  "scripts": {
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后您只需使用 构建应用程序npm run build,然后使用 启动应用程序npm run start

next build 在 .next 文件夹中构建生产应用程序。构建完成后,next start 将启动一个支持混合页面的 Node.js 服务器,为静态生成的页面和服务器端渲染的页面提供服务。

在这里阅读更多相关信息。

更新:添加了正确的启动脚本。

  • 你所做的有帮助,但并不能解决问题。使用 NX 的人应该遵循 NX 最佳实践。您可以在项目中放置随机的“server.js”文件,但添加自定义命令是一个重大错误。有点像您有一个使用 C++ 编写的 CMake 项目,并决定使用自定义命令来运行该项目。正确的答案是添加自定义命令执行器。https://nx.dev/workspace/run-commands-executor 很抱歉我有点有毒,但我真的厌倦了网络开发社区。恕我直言,部分解决方案不是解决方案。 (3认同)