1、npm run build 提示 invalid version

原因:

在 npm 校验中不允许出现 \d+\.\d+.\d+.\d+ ,只能是 \d+\.\d+\.\d+

npm 会采用以三个点分隔的数字开头;但不以四个点分隔的数字开头的任何内容。

解决:

修改版本号

2、npm 版本在 7+以上的时候,npm i 报错

原因:

NPM v7 中,默认安装 peerDependencies 而我们平常安装的模块的 依赖,大多 会安装在 devDependencies 或者 dependencies 这种设计在 NPM v7 之前,不会出现版本打架的情况,但是在 V7 版本开始,会存在安装的时候,
peerDependenciesdevDependenciesdependencies 版本冲突的情况 这个时候,npm 不知道是安装peerDependencies 里面的版本包,还是安装 devDependenciesdependencies 内的版本包。这个时候就会报错

image.png
image.png

解决:

1、在不改变 npm 版本的情况下

使用 npm i --legacy-peer-deps 目的是绕过 peerDependency 自动安装;它告诉 NPM 忽略项目中引入的各个 modules 之间的相同 modules 但不同版本的问题并继续安装,保证各个引入的依赖之间对自身所使用的不同版本 modules 共存。

—legacy-peer-deps 具体做了什么,可以点击链接访问

  1. npm i --legacy-peer-deps

2、改变 npm 全局版本
  1. npm i npm@6.14.15 -g

3、在虚拟环境 下载依赖 报错

报错如下:

No space left on device

原因:

虚拟环境磁盘空间满了

4、私库中新建了一个group之后,上传包报错

报错如下:

Unable to authenticate, need: BASIC realm=”Sonatype Nexus Repository Manager”

看到报错之后,我仔细查看了一下问题,上网找了一下,有说需要把 npm Bearer Token Reaim放入 Active中,并保存
image.png
但是加入之后,我重新登录之后,依然报同样的错误。然后继续查找相关问题,查到需要在本地的 .npmrc 文件中,需要新增 always-auth、_auth、email 这三个东西。
其中,_auth 的值为私库的 用户名:密码 进行 base64 编码而成

5、package.lock.jsonGit 提交时有冲突,如何处理?

解决 package.json 中的冲突,然后使用 npm install --package-lock-onlynpm帮你自动解决冲突 官方推荐做法

6、本地开发开启 HTTPS

MAC 环境

  1. # 1、安装
  2. $ brew install mkcert
  3. # 如果用 Firefox 需要额外安装 nss
  4. $ brew install nss
  5. # 2、安装本地证书机构
  6. $ mkcert -install
  7. # 3、生成证书
  8. $ mkcert localhost 127.0.0.1

Windows 环境

  1. # 1、修改命令执行策略
  2. Set-ExecutionPolicy -ExecutionPolicy Bypass
  3. # 2、远程安装chocolatey
  4. iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  5. # 3、验证是否安装成功
  6. choco # 如果出现 Chocolatey version 就说明安装成功,如果报错可以多安装几次
  7. # 4、安装 mkcert
  8. choco install mkcert # 可能会失败,试多几次
  9. # 5、安装本地证书机构
  10. mkcert -install
  11. # 6、使用 mkcert 生成证书
  12. mkcert localhost 本地ip

使用

这里借助的是 webpack 这类打包工具

  1. 找到生成的证书
    1. 查找路径 C:\Users\用户名 或者 C:\Users\Administrator
    2. 找到 localhost.pemlocalhost-key.pem 两个文件
  2. 把生成的两个文件拷到项目根目录下,在启动命令前,加上以下命令
    1. cross-env HTTPS=true SSL_CRT_FILE=localhost.pem SSL_KEY_FILE=localhost-key.pem

    可以单独建个文件夹 cert存放,然后配置 .gitignore,代码提交时不提交这代码,这时路径可能是 SSL_CRT_FILE=./cert/localhost.pemSSL_KEY_FILE=./cert/localhost-key.pem

7、本地在运行 npm run dev 之后,提示 Error: listen EADDRINUSE: address already in use

原因:
npm 启动服务器的时候,启用的端口被占掉了

解决办法:

  1. 我们可以使用以下命令查找当前端口被哪些进程占用了(以 MAC 举例) ```powershell

    MAC

    sudo lsof -i tcp:启用的端口号

windows

netstat -ano |findstr 启用的端口号

  1. 2. MAC 的效果如下
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/221851/1667371278745-b7e41a14-efd7-4b73-b789-7d2ad7488c23.png#clientId=u65b62cbb-1757-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=O7362&margin=%5Bobject%20Object%5D&name=image.png&originHeight=73&originWidth=999&originalType=url&ratio=1&rotation=0&showTitle=false&size=23823&status=done&style=none&taskId=u1fe63efb-d84e-478d-bed3-739d5bf9316&title=)<br />然后使用以下命令就可以杀死对应的进程
  3. ```powershell
  4. kill -9 对应的PID
  1. window 的效果如下

image.png
可以使用以下命令杀死对应的进程

  1. ## tasklist|findstr [进程号] 找到对应的进程名称
  2. asklist|findstr 12920
  3. ## taskkill /f /t /im [进程名称] 根据进程名称杀死进程
  4. taskkill /f /t /im /node.exe

image.png