可能是一个菜鸟问题,但请启发我。
假设我创建一个干净的新项目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 build
和npm run start
,则再次手动将image.jpg
添加到public
,然后尝试在http://localhost:3000/image.jpg
进行访问,我得到了404 Not Found
。我必须停止应用程序ctrl + c
,然后再次启动它npm run start
(无需构建)才能访问它。那是预期的行为吗?为什么会这样?
我有一个应用程序,可以将文件上传到公共/上传文件,在开发模式下,一切正常,然后在生产中,只能访问已保存的图像。我不应该像我一样保存图像吗?请指教!
当您使用npm run start
启动Next.js服务器时,它将读取/public
目录中的所有文件,并将每个当前文件添加到路由器。如果在完成后添加文件,服务器将不知道那里发生了什么变化。在不进行构建的情况下重新启动服务器将再次读取/public
目录,您可以看到新添加的图像。
在development
模式下,未将公共文件添加到路由器,而是将其作为备用。
将上传的文件保存到/public
可能不是生产中的可靠方法。如果/public
将在下次部署时被覆盖怎么办?如果要扩展应用程序并启动其他实例该怎么办?
我建议将文件上传到Amazon S3等云存储。