npm mongoose包下载冲突解决之道

2024-03-31 06:12

本文主要是介绍npm mongoose包下载冲突解决之道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我在新电脑下载完项目代码后,运行

npm install --registry=https://registry.npm.taobao.org

1运行就报错:

npm ERR! code ERESOLVE

npm ERR! ERESOLVE unable to resolve dependency tree

npm ERR!

npm ERR! While resolving: lowcode-form-backend@1.0.0

npm ERR! Found: mongoose@5.13.22

npm ERR! node_modules/mongoose

npm ERR! dev mongoose@"^5.7.5" from the root project

npm ERR!

npm ERR! Could not resolve dependency:

npm ERR! peer mongoose@"^4.1.12" from mongoose-auto-increment@5.0.1

npm ERR! node_modules/mongoose-auto-increment

npm ERR! dev mongoose-auto-increment@"^5.0.1" from the root project

npm ERR!

npm ERR! Fix the upstream dependency conflict, or retry

npm ERR! this command with --force, or --legacy-peer-deps

npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

npm ERR!

npm ERR! See C:\Users\13066\AppData\Local\npm-cache\eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:

npm ERR! C:\Users\13066\AppData\Local\npm-cache_logs\2024-01-11T08_07_58_049Z-debug.log

D:\h5\code\gitlab\backend\lowcode-form-backend>npx mongoose --version

npm ERR! could not determine executable to run

npm ERR! A complete log of this run can be found in:

npm ERR! C:\Users\13066\AppData\Local\npm-cache_logs\2024-01-11T08_13_20_531Z-debug.log

分析问题:看到这个错误提示,就发现是mongoose这个数据库的版本冲突了,那我就想搞明白,这些是谁?

于是我通过cmd去输入mongoose --version,发现没找到相应命令,那就不是电脑的mongoose版本,于是通过visiable studio 查看,发现了端倪:

从上图发现有3个文件有这个,对于我来讲,只要package.json,那我就把剩下的两个删除即可,删除后运行结果如下:

发现解决了不了问题:

于是我去mongoose-auto-increment - npm查找了下mongoose-auto-increment,发现它最新的一版竟然是8年前?

8年前是2016年,那2016年mongoose是什么版本?

我查了一下:

mongoose - npm

我大概我理解了意思:

怎么办?

那就把mongoose改成大家可以接受的版本:

"mongoose": "^4.1.12",

删除package-lock.json和node_modules,重新运行:npm install --registry=https://registry.npm.taobao.org

可以安装成功

运行npm run dev跑起来,报如下错误:

throw new TypeError('Undefined type ' + name + ' at `' + path +

^

TypeError: Undefined type ObjectID at _id

Did you try nesting Schemas? You can only nest using refs or arrays.

at Function.Schema.interpretAsType (D:\h5\code\gitlab\backend\lowcode-form-backend\node_modules\mongoose\lib\schema.js:673:11)

at Schema.path (D:\h5\code\gitlab\backend\lowcode-form-backend\node_modules\mongoose\lib\schema.js:529:29)

at Schema.add (D:\h5\code\gitlab\backend\lowcode-form-backend\node_modules\mongoose\lib\schema.js:411:12)

at new Schema (D:\h5\code\gitlab\backend\lowcode-form-backend\node_modules\mongoose\lib\schema.js:105:10)

at Object. (D:\h5\code\gitlab\backend\lowcode-form-backend\models\user.js:8:21)

at Module._compile (node:internal/modules/cjs/loader:1099:14)

at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)

at Module.load (node:internal/modules/cjs/loader:975:32)

at Function.Module._load (node:internal/modules/cjs/loader:822:12)

at Module.require (node:internal/modules/cjs/loader:999:19)

at require (node:internal/modules/cjs/helpers:102:18)

at Object. (D:\h5\code\gitlab\backend\lowcode-form-backend\routes\auth.js:3:15)

at Module._compile (node:internal/modules/cjs/loader:1099:14)

at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)

at Module.load (node:internal/modules/cjs/loader:975:32)

at Function.Module._load (node:internal/modules/cjs/loader:822:12)

怎么办?看上面的错误看样子是ObjectId 没有,会不会是版本不对?

我去查看下,相应的版本是否正确

node_modules\mongoose-auto-increment\package.json "version": "5.0.1",版本正常:

\node_modules\mongoose\package.json "version": "4.13.21",

好像不太对,mongoose-auto-increment要求的是4.1.12, 实际是4.13.21,

配置代码:"mongoose": "^4.1.12",表示可以4.x.x,但不包含5.x.x

为了让运行不报错误,于是我改成"mongoose": "4.1.12",

删除mongoose重新运行

npm install mongoose --registry=https://registry.npm.taobao.org

结果一样,崩溃了,怎么办?

找帮哥,结果他给了我一份他那里的下载好的node_modules

我直接放到目录上,运行npm run dev

成功!

我错在哪?

我看了node_modules\mongoose-auto-increment\package.json的依赖,这句表示"mongoose": "^4.1.12",mongoose只能是4.x.x了,如果是5.x.x和6.x.x是不行的

"dependencies": {

"extend": "^3.0.0"

},

"peerDependencies": {

"mongoose": "^4.1.12"

},

"devDependencies": {

"async": "","chai": "",

"mocha": "*",

"mongoose": "^4.1.12"

}

但我看了同事给我的,他的node_modules\mongoose\package.json "version": "5.13.21",就是5.xx.xx,不是4.xx.xx,从上面的错误看出来还有一个--force参数,可以强制成某个版本如下图

于是我想到了另外一个办法,就是使用npm install --force --registry=https://registry.npm.taobao.org

删除node_modules重新运行npm install --force --registry=https://registry.npm.taobao.org

结果刚刚的报错竟然变成警告,可以继续往下走:

下载完成后,我去查看node_modules\mongoose\package.json "version": "5.13.22" 竟然如此的像,好有了,有戏了,运行npm run dev试试

结果运行成功,如下图:

我在想npm install --legacy-peer-deps --registry=https://registry.npm.taobao.org,可以么?

我试了下,还真可以,

运行结果:我去查看node_modules\mongoose\package.json "version": "5.13.22",和上面一样,运行npm run dev也行

总结:

面对上面的冲突,我们有三种解决:

①如果有同事能成功了,直接复制他的node_modules也行,因为是下载环节出问题了,现在这种办法就是跳过下载环节

②使用 --force或者 --legacy-peer-deps 让npm去兼容这种场景

③手动调整被依赖的冲突包的版本,以达到几个依赖都能兼容,再测试运行看效果

这篇关于npm mongoose包下载冲突解决之道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/863610

相关文章

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Python实现文件下载、Cookie以及重定向的方法代码

《Python实现文件下载、Cookie以及重定向的方法代码》本文主要介绍了如何使用Python的requests模块进行网络请求操作,涵盖了从文件下载、Cookie处理到重定向与历史请求等多个方面,... 目录前言一、下载网络文件(一)基本步骤(二)分段下载大文件(三)常见问题二、requests模块处理

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

Tomcat下载压缩包解压后应有如下文件结构

1、bin:存放启动和关闭Tomcat的命令的路径。 2、conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置。 3、lib:存放Tomcat服务器的核心类库(JAR文件),如果需要扩展Tomcat功能,也可将第三方类库复制到该路径下。 4、logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。 5、temp:保存Web应用运行过程中生成的临时文件

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

六、Maven依赖管理、依赖传递和依赖冲突

1.Maven依赖管理 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。 我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动

最新OpenStreetMap POI数据(附下载教程)

OSM(OpenStreetMap)POI(Point of Interest)数据是指在OpenStreetMap上标记的各种兴趣点,如餐馆、酒店、公交站、学校等地点。这些数据在地理信息系统(GIS)应用中非常有用,可以帮助进行地图绘制、路径规划以及其他地理分析任务。 这里直接放出下载地址,有需要的可以自行下载,tips:国外城市的数据源质量比国内的要高一些; OpenStreetMap P