gpt4 book ai didi

url-routing - 为什么 NextJs 需要在添加到公共(public)的文件可见之前重新启动

转载 作者:行者123 更新时间:2023-12-04 04:14:36 35 4
gpt4 key购买 nike

可能是一个菜鸟问题,但请赐教。

假设我创建了一个干净的新项目 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.jpgpublic然后尝试通过 http://localhost:3000/image.jpg 访问它我得到一个 404 Not Found .我必须停止应用程序 ctrl + c然后重新开始 npm run start (无需构建)能够访问它。这是预期的行为吗?为什么会这样?

我有一个应用程序,我将文件上传到公共(public)/上传,在开发模式下一切正常,然后在生产中无法访问刚刚保存的图像。我不应该像现在这样保存图像吗?请指教!

最佳答案

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

development模式公共(public)文件不会添加到路由器,而是作为后备处理。

generatePublicRoutes()

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

我建议将文件上传到像 Amazon S3 这样的云存储。

关于url-routing - 为什么 NextJs 需要在添加到公共(public)的文件可见之前重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60976480/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com