为什么 NextJs 在添加到 public 的文件可见之前需要重启
Why does NextJs requires restart before files added to public are visible
可能是一个菜鸟问题,但请赐教。
假设我创建了一个干净的新项目 mkdir nextjs_app && cd nextjs_app
,然后安装三个包以启动基本的 nextjs 项目 npm install react react-dom next
,然后是 npm init -y
。然后添加脚本:
"dev": "next",
"build": "next build",
"start": "next start"
并添加空 public
文件夹。
现在,如果应用程序以开发模式启动 npm run dev
并且我在 public
中添加一些 image.jpg
并导航至 http://localhost:3000/image.jpg
我可以正常访问它。
但是如果我 运行 npm run build
和 npm run start
,我再次手动添加 image.jpg
到 public
然后尝试在 [=19 访问它=] 我得到一个 404 Not Found
。我必须停止应用程序 ctrl + c
并再次启动它 npm run start
(无需构建)才能访问它。这是预期的行为吗?为什么会这样?
我有一个应用程序,我可以将文件上传到 public/uploads,在开发模式下一切正常,然后在生产模式下无法访问仅保存的图像。我不应该像现在这样保存图像吗?请指教!
当您使用 npm run start
启动 Next.js 服务器时,它会读取 /public
目录中的所有文件并将每个存在的文件添加到路由器。如果您在完成后添加文件,服务器不知道那里发生了某些变化。在没有构建的情况下重新启动服务器会再次读取 /public
目录,您可以看到新添加的图像。
在 development
模式下 public 文件不会添加到路由器,而是作为后备处理。
将上传的文件保存到 /public
在生产中可能不是可靠的方法。如果 /public
将被下一次部署覆盖怎么办?
如果您想扩展应用程序并启动更多实例怎么办?
我建议将文件上传到云存储,如 Amazon S3。
可能是一个菜鸟问题,但请赐教。
假设我创建了一个干净的新项目 mkdir nextjs_app && cd nextjs_app
,然后安装三个包以启动基本的 nextjs 项目 npm install react react-dom next
,然后是 npm init -y
。然后添加脚本:
"dev": "next",
"build": "next build",
"start": "next start"
并添加空 public
文件夹。
现在,如果应用程序以开发模式启动 npm run dev
并且我在 public
中添加一些 image.jpg
并导航至 http://localhost:3000/image.jpg
我可以正常访问它。
但是如果我 运行 npm run build
和 npm run start
,我再次手动添加 image.jpg
到 public
然后尝试在 [=19 访问它=] 我得到一个 404 Not Found
。我必须停止应用程序 ctrl + c
并再次启动它 npm run start
(无需构建)才能访问它。这是预期的行为吗?为什么会这样?
我有一个应用程序,我可以将文件上传到 public/uploads,在开发模式下一切正常,然后在生产模式下无法访问仅保存的图像。我不应该像现在这样保存图像吗?请指教!
当您使用 npm run start
启动 Next.js 服务器时,它会读取 /public
目录中的所有文件并将每个存在的文件添加到路由器。如果您在完成后添加文件,服务器不知道那里发生了某些变化。在没有构建的情况下重新启动服务器会再次读取 /public
目录,您可以看到新添加的图像。
在 development
模式下 public 文件不会添加到路由器,而是作为后备处理。
将上传的文件保存到 /public
在生产中可能不是可靠的方法。如果 /public
将被下一次部署覆盖怎么办?
如果您想扩展应用程序并启动更多实例怎么办?
我建议将文件上传到云存储,如 Amazon S3。