如何防止 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 吧?
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

项目莫名其妙挂掉对于新手来说确实挺头疼的,但也是一种学习的方式,通过不断的排错能了解到更多的东西。 简要概括一下你碰到的问题:

  1. 文档与项目的版本不匹配: 这种情况很常见,软件迭代是不可控的,而搜索到的文档却不一定是最新的,特别是一些小众的功能,能搜到资料就很不错了,对于这种情况,不要轻易特去运行文档中的命令,首先要搞清楚文档的思路,要做一些什么,当前版本中能不能这么做。
  2. 项目挂了如何恢复: 这个需要靠经验积累,挂的方式千千万,每一种情况处理的方式都不一样,像你文章中提到的 node_module 文件夹被清空的情况,首先要搞清楚这个文件夹是干什么的,为什么 .gitignore 中会忽略掉这个文件夹。 然后碰到报错不要慌,先看下报错的信息是什么,尽量去理解报错信息的意思,多搜一下,看看解决方案是什么样的,同时注意搜到的资料和自己运行的是不是同一个版本,当然也可以碰运气,新手阶段大多时候都是碰运气,不要怕报错,怕的就是不报错。

附:

node_module 文件夹与 package.jsonnode_module 是前端的包文件夹,什么是包,就是代码中用到的一些库,比如说 vue,原生的 javascript 并没有 vue 这个对象,vue 的开发者将 vue 中的功能进行封装打包,提供给其他人用,这就是包。package.json 就是当前项目所依赖的包的目录,因为 node_module 文件夹的内容太多了,而且不会在项目中直接去改这个文件夹中的内容,所以 git 就对文件夹进行忽略,其他的协作者下载你的 git 仓库后,可以根据你 package.json 中定义的依赖目录使用 npm 去进行下载或者更新。

同理,vendor 文件夹与 composer.json 也是一样的关系,vendor 中是放的后端的一些依赖包,管理工具是 composer

一般来说 node_modulevendor 文件夹随便删,删除之后使用对应的管理工具进行恢复就可以了。

1年前 评论

项目莫名其妙挂掉对于新手来说确实挺头疼的,但也是一种学习的方式,通过不断的排错能了解到更多的东西。 简要概括一下你碰到的问题:

  1. 文档与项目的版本不匹配: 这种情况很常见,软件迭代是不可控的,而搜索到的文档却不一定是最新的,特别是一些小众的功能,能搜到资料就很不错了,对于这种情况,不要轻易特去运行文档中的命令,首先要搞清楚文档的思路,要做一些什么,当前版本中能不能这么做。
  2. 项目挂了如何恢复: 这个需要靠经验积累,挂的方式千千万,每一种情况处理的方式都不一样,像你文章中提到的 node_module 文件夹被清空的情况,首先要搞清楚这个文件夹是干什么的,为什么 .gitignore 中会忽略掉这个文件夹。 然后碰到报错不要慌,先看下报错的信息是什么,尽量去理解报错信息的意思,多搜一下,看看解决方案是什么样的,同时注意搜到的资料和自己运行的是不是同一个版本,当然也可以碰运气,新手阶段大多时候都是碰运气,不要怕报错,怕的就是不报错。

附:

node_module 文件夹与 package.jsonnode_module 是前端的包文件夹,什么是包,就是代码中用到的一些库,比如说 vue,原生的 javascript 并没有 vue 这个对象,vue 的开发者将 vue 中的功能进行封装打包,提供给其他人用,这就是包。package.json 就是当前项目所依赖的包的目录,因为 node_module 文件夹的内容太多了,而且不会在项目中直接去改这个文件夹中的内容,所以 git 就对文件夹进行忽略,其他的协作者下载你的 git 仓库后,可以根据你 package.json 中定义的依赖目录使用 npm 去进行下载或者更新。

同理,vendor 文件夹与 composer.json 也是一样的关系,vendor 中是放的后端的一些依赖包,管理工具是 composer

一般来说 node_modulevendor 文件夹随便删,删除之后使用对应的管理工具进行恢复就可以了。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!