如何防止 Laravel 项目被某些命令炸掉?以及被炸掉之后如何恢复?
有点标题党了,炸掉就是破坏的意思,而且是恢复有点费劲,还不知道有没有完全恢复的。
让我问出这个问题的事件是这样的:
首先我以我自己稀里糊涂弄成功的广播系统为基础尝试将其改成私有的。这是我稀里糊涂的方法:博客:laravel-websockets 实现“低配版”广播系统 。另外由于官方文档中文版实在是看不懂,就找了一个非官方的教程。这是那个非官方的教程:medium.com/@dennissmink/laravel-ec... 。由于没找到比较新的教程,所以用了这个好几年前的教程。
教程的这个命令报错了:
php artisan make:auth
搜了一下错误提示,找到了这套命令:
composer require laravel/ui
php artisan ui vue --auth
php artisan migrate
运行完我的项目就被炸了。Vite 自动退出。研究了一下发现 node_modules 目录下面的东西几乎被清空了。今天试的时候 node_modules 目录甚至都被删了。后来才反应过来新版的 Laravel 要用 Laravel Breeze。laravel/ui 也被废弃了。
第一次被炸的时候没什么经验,只好删了整个项目。然后想了一下被炸一次就删除效率太低了。之后首先想到的是备份整个项目,然后又想到了 git。没错,我之前没用 git。然后信心满满地用 git commit 了一次。之后又主动被炸了一次,再 commit 一次,然后恢复到之前的版本。结果发现还是不行,某些目录里的内容好像因为 gitignore 文件被忽略了,比如 node_modules,而炸我项目的命令好像改变了那些被忽略的内容,所以用 git 也回不去了。
我搜了一下“’vite’ 不是内部或外部命令,也不是可运行的程序”,还好搜到一个说用 npm i 解决的。运行之后项目确实看起来正常了。但是不知道以后会不会有这么好的运气。
下面是相关问题列表:
- 这种项目被炸的情况是否比较常见,特别是对新手来说?
- 如果被炸比较常见的话,被炸的形式是否很多样?
- 如果被炸的形式很多样的话,是否有通用的恢复的方法?我怀疑只要包管理器的配置文件用 git 恢复了就能用 composer 和 npm 恢复。但是多出来的包能自动删除吗?
- 能尽量避免项目被炸吗?
- 上面我写的项目被炸的事件的原因是什么?跟我稀里糊涂地弄成功的那个方法是否有关?就是上面第一个链接里的那个方法。或者说只是关于 laravel/ui 的那三条命令的问题?
- 这个不会是 bug 吧?
高认可度评论:
项目莫名其妙挂掉对于新手来说确实挺头疼的,但也是一种学习的方式,通过不断的排错能了解到更多的东西。 简要概括一下你碰到的问题:
node_module
文件夹被清空的情况,首先要搞清楚这个文件夹是干什么的,为什么.gitignore
中会忽略掉这个文件夹。 然后碰到报错不要慌,先看下报错的信息是什么,尽量去理解报错信息的意思,多搜一下,看看解决方案是什么样的,同时注意搜到的资料和自己运行的是不是同一个版本,当然也可以碰运气,新手阶段大多时候都是碰运气,不要怕报错,怕的就是不报错。附:
node_module
文件夹与package.json
:node_module
是前端的包文件夹,什么是包,就是代码中用到的一些库,比如说 vue,原生的 javascript 并没有 vue 这个对象,vue 的开发者将 vue 中的功能进行封装打包,提供给其他人用,这就是包。package.json 就是当前项目所依赖的包的目录,因为node_module
文件夹的内容太多了,而且不会在项目中直接去改这个文件夹中的内容,所以 git 就对文件夹进行忽略,其他的协作者下载你的 git 仓库后,可以根据你 package.json 中定义的依赖目录使用npm
去进行下载或者更新。同理,
vendor
文件夹与composer.json
也是一样的关系,vendor
中是放的后端的一些依赖包,管理工具是composer
。一般来说
node_module
和vendor
文件夹随便删,删除之后使用对应的管理工具进行恢复就可以了。项目莫名其妙挂掉对于新手来说确实挺头疼的,但也是一种学习的方式,通过不断的排错能了解到更多的东西。 简要概括一下你碰到的问题:
node_module
文件夹被清空的情况,首先要搞清楚这个文件夹是干什么的,为什么.gitignore
中会忽略掉这个文件夹。 然后碰到报错不要慌,先看下报错的信息是什么,尽量去理解报错信息的意思,多搜一下,看看解决方案是什么样的,同时注意搜到的资料和自己运行的是不是同一个版本,当然也可以碰运气,新手阶段大多时候都是碰运气,不要怕报错,怕的就是不报错。附:
node_module
文件夹与package.json
:node_module
是前端的包文件夹,什么是包,就是代码中用到的一些库,比如说 vue,原生的 javascript 并没有 vue 这个对象,vue 的开发者将 vue 中的功能进行封装打包,提供给其他人用,这就是包。package.json 就是当前项目所依赖的包的目录,因为node_module
文件夹的内容太多了,而且不会在项目中直接去改这个文件夹中的内容,所以 git 就对文件夹进行忽略,其他的协作者下载你的 git 仓库后,可以根据你 package.json 中定义的依赖目录使用npm
去进行下载或者更新。同理,
vendor
文件夹与composer.json
也是一样的关系,vendor
中是放的后端的一些依赖包,管理工具是composer
。一般来说
node_module
和vendor
文件夹随便删,删除之后使用对应的管理工具进行恢复就可以了。