Next js 生产构建是否需要服务器中的 node_modules 文件夹?

Lan*_*nce 17 node.js reactjs server-side-rendering next.js

我对 Next js 及其部署过程相当陌生。我最近将我的一个 React js 项目转换为 Next js,以便利用 Next js 提供的服务器端渲染功能。现在到了部署时间,我发现如果node_modules服务器中没有该文件夹,下一个版本将无法部署。我在我的页面中使用getServerSideProps并使用"build": "next build"package.json 中的命令进行构建。问题是我的 node_modules 文件夹接近 300MB(.next构建又增加了大约 10MB),我认为每次部署都伴随这么大的重量并不是最佳实践(我打算部署此构建的不同实例,因此 310MB)服务器中的 X 个实例)。我在这里做错了什么还是这是实现这一目标的唯一方法?我很感激任何答案。谢谢...

hbo*_*lan 10

更新(11/14/22): 前面提到的“输出独立”功能不再是实验性的:

// next.config.js
module.exports = {
  output: 'standalone',
}
Run Code Online (Sandbox Code Playgroud)

上一个答案: 最新的Next.js 文档有一个关于如何创建独立构建的很好的示例,以及如何使用docker完成它的一个很好的示例。截至目前,该功能仍处于实验阶段

// next.config.js
module.exports = {
  experimental: {
    outputStandalone: true,
  },
}
Run Code Online (Sandbox Code Playgroud)


Lan*_*nce 8

经过一番研究后,我正在回答我自己的问题。如果使用,getServerSideProps则无法静态导出项目。因此需要node_modules文件夹来将项目部署到服务器上。这并不意味着您必须通过 FTP 传输node_modules,您可以在服务器端执行 npm 构建,并将其下载node_modules到部署文件夹。就我而言,部署文件夹的大小约为 310MB,其中node_modules文件夹本身约为 300MB。

  • 我公司的一个人在没有文件夹的情况下成功做到了这一点,我们正在使用服务器端道具。不知道他用了什么法术。如果我弄清楚的话会让你知道 (4认同)