新项目跑不起来,人和项目总得有一个能跑
前言
- 有人说面试造火箭,进去拧螺丝;其实个人觉得问的问题是项目中涉及的点 || 热门的技术栈都是很好的面试体验,不要是旁门左道冷门的知识,实际上并不会用到的。
- 进入新公司或者接手新项目,都会遇到如何将项目跑起,跑不起的话,可能就得人跑了。
每个人的花期不同。
就像万特特在《这世界很好,你也不差》中讲的,每个人花期不同,不必焦虑有人比你提前拥有。
一、问题剖析
那是一个风和日丽的早上,我想要去看漫天霞光。
要和心上人手挽手走在街上,
清晨的花香,傍晚的夕阳。
正当我沉迷于甜蜜的幻想中,前同事发来:我遇到一个问题,帮我看看呗!
真是的,慌慌张张的,说吧~
问题是这样子的:
现在有一个新项目,B项目从A项目复制过去,在原有的功能上扩展。
我又多嘴的问了一句,为啥要复制一份过去啊!
他回道:因为现在要做国际化的需求,之前的项目没有考虑到,改起来很麻烦,打算先拷贝一份出来,通过java程序执行一下,先把大部分的先转化一下,这样子不会影响原本项目的开发。
我又对嘴了一下,开新分支不可以嘛!
他说:因为是给两个地区用的,可能在A页面,两个区的需求不同,改起来也麻烦,需求不同,就没必要硬写在一起了。
懂了!
二、gitlab仓库中有两种方式拉取代码仓库:ssh和https
ssh
首先,确保你已经在 GitLab 上配置了 SSH 密钥。如果没有,你需要生成 SSH 密钥并将公钥添加到 GitLab 的个人设置中。
https
使用 HTTPS 协议拉取代码需要输入你的 GitLab 用户名和密码,或者是访问令牌(Access Token)。
两者
- 使用 SSH 协议可以避免频繁输入用户名和密码,但需要提前配置好 SSH 密钥。
- 使用 HTTPS 协议在拉取代码时需要提供用户名和密码或者访问令牌,相对来说更加方便快捷。
一般来说,都是用https拉取仓库,但我怎么拉都拉不下来。
提示:
SSL certificate problem: self signed certificate
翻译:SSL证书问题:自签名证书
于是,我尝试运行ssh的方式拉取。
我们首先需要先生成秘钥
ssh-keygen -t rsa -C “your_email@youremail.com”
// 命令中的email,就是gitlab中的账号,需要保持一致
直接三个Enter就行,然后会提示输入密码(可输可不输)
在~/.ssh/下会生成两个文件,id_rsa和id_rsa.pub
id_rsa是私钥
id_rsa.pub是公钥
在我们c盘的用户里面有个.ssh文件夹
C:\Users\Lenovo\.ssh
gitlab添加秘钥
这样子就配置好了,可以通过ssh方式拉取了。
git clone 项目远程仓库ssh地址
项目已拉取。
此时要推送的时候,一直让我输入密码,但我输入完之后,仍然要求输入。
我使用的是tortoisegit
连接gitlab,总是弹出git@xxx.com’s password 对话框
然后打开TortoiseGit设置,如下图进入相应页面,选择相对路径的ssh.exe文件
查找git在哪里,只需要输入 where git
到这里项目已经拉取,也能推送了。
接下来运行项目。
三、运行的时候,先安装依赖,发现npm安装失败。
发现npm i
于是,我尝试cnpm i安装,安装是可以安装,但npm run serve的时候还是报错了。
四、于是,我找同事要来了他本地的依赖,想着在我本地看看能不能跑起来。
但因我和同事的环境(npm、node)环境不一样。
于是,我和他保持一致的版本node:12
但又因为还是有些不同,npm run serve的时候,报了:
error in ./src/styles/element-variables.scss
Syntax Error: Error: Missing binary. See message above.
看起来是,sass的问题,于是想着重新安装一下
一般来说sass、node-sass问题经常会出现。
npm install --save-dev sass-loader node-sass
仍然不行,那切换一下node的版本,从node10-node14都轮流切换尝试都不行。
我使用的是nvm管理node版本。
但点进去看只有10.14.1版本有node_modules文件夹依赖
其他的版本貌似没有,本来想着和同事保持12版本的node,然后把他的依赖复制给我,但我本地的node12没有node_modules文件夹
关于上面的scss文件引起的:Syntax Error: Error: Missing binary. See message above.
下载fibers
运行的时候报错:而且会弹出框说:中止/忽略(其实是fibers缺少二进制文件执行)
Try running this to fix the issue: D:\Program Files\nodejs\node.exe E:\vue-project\node_modules\fibers/build
Error: Cannot find module 'E:\vue-project\node_modules\fibers\bin\win32-x64-83\fibers'
Require stack:
我们发现了fibers引起的错误
有回答说:
项目node_moudules/fibers/bin文件夹中没有win32-x64-83模块,缺少win32-x64-83文件夹下的fibers.node。
1.在github下载对应系统版本的node文件
win32-x64-83_binding.node 文件下载地址:github-releases
2.下载后的win32-x64-83_binding.node文件改名为fibers.node。
3.保存fibers.node在项目node_moudules/fibers/bin新建的win32-x64-83文件夹中。
4.然后重新执行run serve就可以
rebuild node-sass
执行
npm rebuild node-sass
如果提示 stack Error: EACCES: permission denied, mkdir 错误,则执行命令:
npm rebuild node-sass --unsafe-perm
失败告终!
但我简单粗暴直接把fibers文件夹给删除重新跑就可以了。(√)
五、后面想了一下,项目的背景,是从A项目复制过来的,那我把A项目的依赖复制过来运行下看看。
复制过来后,可以运行了,但因为B新项目装了vue-i18n国际化依赖,于是我安装一下,运行,终于可以了。
但项目打开页面的时候,还是报错了。
看起来,vue-router版本和i18n版本冲突了。
我的解决办法是把i18n的版本 改为了 8.26.7 ,再启动项目就可以了
npm install vue-i18n@8.26.7 -S
虽然B项目的package.json写着是版本9的,但这不影响我运行。
只不过在页面用到这个依赖的时候可能会有一些不同。
完成搞定。
后记
那晚,我们一起找了家烧烤店,他说:今日之事,都在酒里了,一口闷。
道不清,理还乱,别是一般滋味在心头~
刚开始接手一个项目的时候,依赖啊,版本啊,什么的都很头疼,但一步一步来,见招拆招,无非就是node版本、npm版本、cnpm他们的故事。
如果有其他更好的方法也欢迎评论区见,这里提供的只是诸多方法之一。
来源:juejin.cn/post/7339376488028307456