运行别人的vue项目(特别是旧项目),遇到的坑

253 阅读17分钟

先列举报错内容,这些错误情况,均适用,出现以下错误,大概率解决一个又出现另一个,无穷无尽

错误信息1:stack Error: Can't find Python executable "python", you can set the PYTHON env variable.(sass版本过低导致)

错误信息2:gyp ERR! cwd C:\Users\yovngfun\code\2CIM-Web\node_modules\node-sass(sass版本过低导致)

错误信息3:the package-lock.json file was created with an old version of npm(node版本过高导致)

错误信息4:Unsupported engine(node版本过高导致)

错误信息5:Syntax Error: Error: ‘**\node_modules\pngquant-bin\vendor\pngquant.exe‘(npm网络导致)

错误信息6:Error: Node Sass does not yet support your current environment

错误信息7:this.getOptions is not a function

错误信息8:Syntax Error: Error: Cannot find module ‘imagemin-gifsicle‘

错误信息9:Syntax Error: Error: Cannot find module ‘gifsicle‘

错误信息10:throw err; ^ Error: Cannot find module ‘node:util‘(npm和cnpm版本不一致)

先说原因,最后总结终极解决方案

1,拿到后直接npm i

由于项目较早,大概率会出现node版本过高问题,罪魁祸首是sass,sass每个版本有对应的node版本,过高,过低都不行。

这时候就需要使用nvm,nvm安装并切换对应的node版本。nvm安装node时会同步安装npm,需要注意一定要确保node和npm都安装成功。

由于项目比较老,安装依赖需要良好的网络环境,不然会遇到各种包缺失的情况,最好使用cnpm安装,因为cnpm较早就开始有镜像支持,对古早项目比较友好。pnpm是最近的镜像源,不支持旧版本node。

但是cnpm和npm需要版本对照,要安装npm对应版本的cnpm

至此以拿到手时,项目里的"node-sass": "^4.12.0"为例

解决办法:

找到sass对应的node版本号, 执行并切换对应的版本号,这里用nvm管理node。安装node时,一定要观察npm同步安装成功,每个node对应一个npm。

具体命令如下:

//安装node
nvm install 14.15.0
//查看所有node
nvm ls
//切换node版本
nvm use 14.15.0
//检查npm版本,输出6.13.4
npm -v
//安装cnpm, 版本需与npm版本一致
 npm install -g cnpm@6.0.0 --registry=https://registry.npm.taobao.org
//最后执行安装依赖
cnpm i
//运行项目
npm run serve

追更:

当直接用cnpm安装依赖时,会发现node_modules里很多依赖是采用外链,且包数量增加了很多这里可以采用其他方式

1,使用nrm,指定源之后再使用npm安装即可

npm install -g nrm
nrm add registry http://192.168.10.127:8081/repository/npm-public/
npm install

2,使用yarn

npm i -g yarn
yarn install