likes
comments
collection
share

新项目跑不起来,人和项目总得有一个能跑

作者站长头像
站长
· 阅读数 66

前言


每个人的花期不同。

就像万特特在《这世界很好,你也不差》中讲的,每个人花期不同,不必焦虑有人比你提前拥有。

新项目跑不起来,人和项目总得有一个能跑

一、问题剖析

那是一个风和日丽的早上,我想要去看漫天霞光。

要和心上人手挽手走在街上,

清晨的花香,傍晚的夕阳。

正当我沉迷于甜蜜的幻想中,前同事发来:我遇到一个问题,帮我看看呗!

真是的,慌慌张张的,说吧~

问题是这样子的:

现在有一个新项目,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他们的故事。

如果有其他更好的方法也欢迎评论区见,这里提供的只是诸多方法之一。

👍 如果对您有帮助,您的点赞是我前进的润滑剂。

以往推荐

原文链接

转载自:https://juejin.cn/post/7339376488028307456
评论
请登录