react中安装依赖时的问题 【集合】

目录

依赖升级/更新

[1、 npm install @ --save-dev 与 npm install @ 的区别](#1、 npm install @ --save-dev 与 npm install @ 的区别)

[1. ‌安装位置(依赖类型)‌](#1. ‌安装位置(依赖类型)‌)

[2. ‌package.json 中的区别‌](#2. ‌package.json 中的区别‌)

[3. ‌示例](#3. ‌示例)

[4. ‌何时使用哪种方式‌](#4. ‌何时使用哪种方式‌)

[2、npm install @ 和 yarn add @ 有什么不一样吗](#2、npm install @ 和 yarn add @ 有什么不一样吗)

‌命令语法‌:

‌锁文件‌:

‌安装速度‌:

‌依赖解析‌:

‌输出信息‌:

清理缓存‌:

[3、 安装依赖时,显示There appears to be trouble with your network connection.](#3、 安装依赖时,显示There appears to be trouble with your network connection.)

[4、 src/ package.json 中的依赖 版本与 node_modules包中 中的版本不一致](#4、 src/ package.json 中的依赖 版本与 node_modules包中 中的版本不一致)

[方法 1: 使用 yarn add 命令](#方法 1: 使用 yarn add 命令)

[方法 2: 手动编辑 package.json](#方法 2: 手动编辑 package.json)

验证更改

注意事项

5、依赖版本锁定

[npm 锁定版本方式](#npm 锁定版本方式)


依赖升级/更新

javascript 复制代码
// @edsp/apollo-formy依赖本来3.0.0 现在升级到 4.0.0 

npm install @edsp/apollo-form@4.0.0
// 或者
yarn add @edsp/apollo-form@4.0.0

1、 npm install <package-name>@<version> --save-dev 与 npm install <package-name>@<version> 的区别

比如 npm install @edsp/apollo-form@4.0.0 --save-devnpm install @edsp/apollo-form@4.0.0 的主要区别在于包的安装位置(即依赖类型),而不是包本身或版本。以下是具体分析:

1. ‌**安装位置(依赖类型)**‌
  • ‌**--save-dev** ‌:
    • 将包安装为开发依赖(devDependencies)。
    • 开发依赖是仅在开发过程中需要的包,例如构建工具、测试框架等。
    • 这些依赖不会在生产环境中使用。
  • 不带 --save-dev ‌:
    • 将包安装为生产依赖(dependencies)。
    • 生产依赖是应用程序在生产环境中运行时需要的包。
2. ‌package.json 中的区别
  • 使用 --save-dev 时,包会被添加到 package.json 文件的 devDependencies 部分。
  • 不使用 --save-dev 时,包会被添加到 package.json 文件的 dependencies 部分。
3. ‌示例

3.1 使用 --save-dev

javascript 复制代码
{
  "devDependencies": {
    "@edsp/apollo-form": "4.0.0"
  }
}

3.2 不使用 --save-dev

javascript 复制代码
{
  "dependencies": {
    "@edsp/apollo-form": "4.0.0"
  }
}
4. ‌何时使用哪种方式
  • 使用 --save-dev ‌:
    • 当你只需要在开发环境中使用该包时,例如构建工具(如 Webpack、esbuild)、测试框架(如 Jest、Mocha)等。
  • 不使用 --save-dev ‌:
    • 当你需要在生产环境中使用该包时,例如应用程序的核心功能依赖。

2、npm install <package-name>@<version> 和 yarn add <package-name>@<version> 有什么不一样吗

比如 npm install @edsp/apollo-form@4.0.0 和 yarn add @edsp/apollo-form@4.0.0有什么不一样吗

npm installyarn add 是两种常用的包管理工具命令,用于安装 Node.js 项目中的依赖包。虽然它们的功能相似,但在一些细节上有所不同。以下是它们之间的主要区别:

命令语法 ‌:
  • npm install <package-name>@<version> :使用 npm 安装指定版本的包,并将其添加到 dependencies中。
  • yarn add <package-name>@<version>:使用 yarn 安装指定版本的包。默认情况下,yarn 会根据上下文将包添加到 dependenciesdevDependencies 中。如果当前目录有 package.json 文件,yarn 会根据文件中的 scripts 和其他配置自动判断。
锁文件 ‌:
  • npm 使用 package-lock.json 文件来锁定依赖的版本。
  • yarn 使用 yarn.lock 文件来锁定依赖的版本。
安装速度 ‌:

yarn 通常比 npm 更快,因为它并行安装依赖,而 npm 则是顺序安装。
4.

依赖解析 ‌:

npm 和 yarn 在解析依赖时可能会有不同的行为,尤其是在处理依赖冲突时。
5.

输出信息 ‌:

npm 和 yarn 的输出信息格式不同,yarn 的输出通常更简洁和易于阅读。
6.

清理缓存 ‌:
  • 对于 npm:npm cache clean --force
  • 对于 yarn:yarn cache clean

尝试使用不同的包管理工具‌:如果 npm 遇到问题,可以尝试使用 yarn,反之亦然。

3、 安装依赖时,显示There appears to be trouble with your network connection.

网络超时了,增加网络超时时间,使用 --network-timeout

例如:

javascript 复制代码
// yarn add <package-name> --network-timeout 100000      100000=100毫秒  

yarn add @edsp/apollo-form@4.0.0 --network-timeout 100000

4、 src/ package.json 中的依赖 版本与 node_modules包中 中的版本不一致

比如 src/ package.json 中的 @edsp/apollo-form 版本与 node_modules/@edsp/ package.json 中的版本不一致,你可以通过以下步骤来更新

src/package.json 中的版本:

(node_modules/@edsp/ package.json 中的版本变了,说明下载的@edsp/apollo-form成功了)

方法 1: 使用 yarn add 命令
  1. 直接更新版本 ‌:

    使用 yarn add 命令来指定你想要的版本。这将更新 package.json 中的版本,并重新安装该包。

    javascript 复制代码
    yarn add @edsp/apollo-form@4.0.0

    这条命令会将 @edsp/apollo-form 的版本更新为 4.0.0,并在 package.jsondependencies 中反映出来。

方法 2: 手动编辑 package.json
  1. 打开 package.json 文件 ‌:

    使用文本编辑器打开项目根目录下的 package.json 文件。

  2. 找到并修改版本 ‌:

    dependencies 部分找到 @edsp/apollo-form,然后将其版本更改为所需的版本(例如 4.0.0)。

    javascript 复制代码
    "dependencies": { 
        "@edsp/apollo-form": "4.0.0", // 其他依赖项 
    }
  3. 重新安装依赖 ‌:

    保存 package.json 文件后,运行以下命令以重新安装所有依赖项,这将确保 node_modules 中的包与 package.json 中的版本一致。

    javascript 复制代码
    yarn install
验证更改
  • 检查 package.json ‌:

    确保 package.json 中的版本已经更新为你指定的版本。

  • 检查 node_modules ‌:

    你可以检查 node_modules/@edsp/apollo-form/package.json 文件中的 version 字段,以确认安装的版本是否正确。

注意事项
  • 版本兼容性 ‌:

    在更改版本之前,确保新版本的包与你的项目兼容。查看包的更新日志或文档以了解可能的变更。

  • 清理缓存 ‌:

    如果遇到安装问题,可以尝试清理 Yarn 缓存:

    javascript 复制代码
    yarn cache clean

    通过这些步骤,你可以确保 package.jsonnode_modules 中的 @edsp/apollo-form 版本一致。

5、依赖版本锁定

当安装依赖时,报下面依赖版本的错误时,可以根据项目需要的版本进行锁定,表格锁定版本不一定使用你的项目,供参考给出的示例

依赖名称 需锁定版本 备注
@ctrl/tinycolor 3.6.0
@adobe/css-tools 4.2.0
babel-plugin-transform-jsx-condition 0.1.2
axe-core 4.6.3
iterator.prototype 1.1.1
dompurify 3.0.5
jackspeak 2.3.3
domain-browser 4.22.0
loglevel 1.8.1
terser 4.8.1 使用 webpack v4 等项目锁定该版本
5.29.2 使用 webpack v5 等项目锁定该版本
vite 2.9.17 vite@2.x 锁定该版本
@use-gesture/core 10.3.0
@finclip/clender-compile 1.0.36
uglify-js 3.17.4
engine.io-client 3.5.3

1. 锁定版本:

package.json文件中增加resolutions配置

javascript 复制代码
"resolutions": {
    "@ant-design/icons-svg": "4.2.1"
}

2. 组件市场组件模板锁定terser方式如下

package.json文件中增加resolutions配置

javascript 复制代码
"resolutions": {
    "react-styleguidist-jfrog/terser-webpack-plugin/terser": "5.29.2"
}

// 或

"resolutions": {
    "@cmbc/react-styleguidist/terser-webpack-plugin/terser": "5.29.2"
}

根据模板中使用的是react-styleguidist-jfrog或@cmbc/react-styleguidist进行选择使用

3. 安装依赖方式

resolutions为yarn配置,所以需使用yarn安装依赖(如果项目中存在yarn.lock文件,先删除再安装依赖)。如项目特殊情况必须使用npm安装依赖,请将上述依赖锁定在dependencies配置下,锁定方式同resolutions配置。

  1. 如果依赖安装报node版本错误,例如下图,请执行 yarn --ignore-engines 命令安装依赖
npm 锁定版本方式

package.json 中配置 overrides 字段(注:需npm 8及以上版本),示例(只是示例具体配置根据项目实际情况来):

javascript 复制代码
"overrides": {
    "vite": "2.9.17",
    "@webassemblyjs/ast": "1.11.6",
    "@webassemblyjs/wasm-parser": "1.11.6",
    "terser-webpack-plugin": {
        "terser": "5.29.2"
    },
    "html-minifier-terser": {
        "terser": "5.29.2"
    }
}

将项目中所有 vite、@webassemblyjs/ast、@webassemblyjs/wasm-parser 安装为指定版本,terser-webpack-plugin 和 html-minifier-terser 所依赖的 terser 版本指定为 5.29.2,其余 terser 版本不受影响。

注意 ‌:由于 overrides 字段需要 npm 8 以上版本,但 pset npm 版本为 6.x,可将本地 npm 版本升级为 8.x 安装成功的 package-lock.json 进行提交,同时 pset 上使用 npm 构建,可使 pset 达到锁定版本的目的。

相关推荐
wyiyiyi21 分钟前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip43 分钟前
vite和webpack打包结构控制
前端·javascript
excel1 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国1 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼1 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy2 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT2 小时前
promise & async await总结
前端
Jerry说前后端2 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天2 小时前
A12预装app
linux·服务器·前端
7723892 小时前
解决 Microsoft Edge 显示“由你的组织管理”问题
前端·microsoft·edge