查看原文
其他

项目启动失败?不用慌!

鱼皮 程序员鱼皮 2024-03-04

大家好,我是老鱼皮。

想必所有学编程的同学都遇到过这样一个问题:把别人的代码或项目拉取到自己的电脑上,然后按照别人提供的步骤去启动项目。结果当你自信满满地点击运行键时,就看到了。。。

这个时候,很多初学编程的同学就会慌了。为什么我和你的代码一样、操作一模一样,结果项目还启动失败了呢?!

不要慌,这其实是一个非常普遍的问题,也很好解决。今天这篇文章就来分享一下如何解决它。



首先,运行一个项目,需要考虑以下几个要素:

  1. 代码
  2. 环境(系统、平台)
  3. 依赖
  4. 资源

只要保证这 4 个要素和其他成功运行的项目一致,那么 99.9% 的概率你也能成功运行项目!

首先是代码,这个没什么好说的,只要别人提供给你的代码是正确可运行的,直接 clone(拷贝)到本地即可。

然后是最最最最重要的环境!绝大多数情况下,都是因为你本地电脑的环境和其他同学的环境不一致,才导致了报错。

环境又包括系统、平台等。系统就是指 Windows、Linux、MacOS 等,如果是 Java 项目,因为 JVM 的存在,所以基本上不会出现系统不兼容的问题;但如果是其他不具备跨平台特性的语言,在 Win 上能跑的项目可能到 Linux 上就不能正确运行了,会出现各种各样隐藏的坑。

平台是指运行代码需要的基本环境,比如 Node.js、Java、.NET 等。对于平台来说,最重要的莫过于 版本 了,如果版本不兼容,那么项目就很容易运行不起来,或者有很多奇奇怪怪的错误。

就拿我给大家开源的项目代码来说,有的同学能运行,有的同学就不能运行,多半是环境版本的问题。比如在安装了 Java 17 的电脑上去跑 Java 8 的后端代码,在 Node 10 的电脑上去跑 Node 16 的前端代码等等。

除了环境外,我们在安装项目依赖时,也同样需要注意版本。举个例子,对于前端项目来说,有些项目依赖的版本定义可能并不明确,如下图:

版本号前的 ^ 的意思是版本号的末尾可以变化,所以你实际安装的版本可能和其他更早安装的依赖版本不一致,有可能就会出现代码冲突、不兼容。

所以前端项目一般会使用 package-lock.json 文件来锁住依赖的版本号,保证不同开发人员在不同时间拉取依赖时版本都是一致的。

而 Java 后端项目相对就简单了一些,我们写 Maven(Gradle)依赖时一般都指定一个明确的版本号,不存在版本号不一致导致的冲突。(如果 jar 包间冲突的话,那又是另一个故事了,可以用 Maven Helper 解决一下)。

除了环境之外,还有一个很不起眼的因素,就是资源,像 CPU、内存、硬盘容量等等。比如项目需要至少 8 G 内存、10 G 硬盘,结果你的电脑只有 4 G 内存、硬盘也不够了,那么项目要么运行不起来,要么就是后期出现各种奇奇怪怪的问题。

除了上述几个因素外,网络环境(比如无法拉取内网依赖)、代码路径(不要出现中文)等也可能会影响项目的运行,这些都要注意。

综上,我们如果拉下来别人的开源项目学习、或者是拉取公司的项目开发前,最先要做的事情是阅读官方文档来确定项目运行依赖的环境(版本)、需要的资源等。

以开源知识库网站 wiki.js 为例,很明确地指出了这些要求:

所以阅读官方文档真的是非常重要的!像我在星球里带大家做了一个用户中心项目,刚做完框架版本就大更新了,结果一些同学就一脸懵逼了。其实只要仔细阅读一遍官方文档,很多问题就迎刃而解了。



以上就是本期分享,希望对大家有帮助。

往期推荐

我的编程学习小圈子

文件上传下载,这样做最简单~

我做了几个项目,还是啥都不会?

面试被问性能优化,被考倒了。。

我们的 AI 小工具,丝滑~

学编程,千万不要轻易转行!

继续滑动看下一个

项目启动失败?不用慌!

鱼皮 程序员鱼皮
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存