为什么NextJs需要重新启动才能看到添加到公共目录的文件

问题描述 投票:1回答:1

可能是一个菜鸟问题,但请启发我。

假设我创建一个干净的新项目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启动,并且我在image.jpg中添加了一些public并导航至http://localhost:3000/image.jpg,那么我可以很好地访问它。

但是如果我运行npm run buildnpm run start,则再次手动将image.jpg添加到public,然后尝试在http://localhost:3000/image.jpg进行访问,我得到了404 Not Found。我必须停止应用程序ctrl + c,然后再次启动它npm run start(无需构建)才能访问它。那是预期的行为吗?为什么会这样?

我有一个应用程序,可以将文件上传到公共/上传文件,在开发模式下,一切正常,然后在生产中,只能访问已保存的图像。我不应该像我一样保存图像吗?请指教!

url-routing next.js
1个回答
0
投票

当您使用npm run start启动Next.js服务器时,它将读取/public目录中的所有文件,并将每个当前文件添加到路由器。如果在完成后添加文件,服务器将不知道那里发生了什么变化。在不进行构建的情况下重新启动服务器将再次读取/public目录,您可以看到新添加的图像。

development模式下,未将公共文件添加到路由器,而是将其作为备用。

generatePublicRoutes()

将上传的文件保存到/public可能不是生产中的可靠方法。如果/public将在下次部署时被覆盖怎么办?如果要扩展应用程序并启动其他实例该怎么办?

我建议将文件上传到Amazon S3等云存储。

© www.soinside.com 2019 - 2024. All rights reserved.