首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解决别名包中断的对等依赖问题npm安装

解决别名包中断的对等依赖问题npm安装
EN

Stack Overflow用户
提问于 2022-04-17 12:07:44
回答 1查看 1.5K关注 0票数 0

我正在尝试测试我的npm包,针对不同版本的React。因此,我在package.json中为旧版本设置了别名。

代码语言:javascript
运行
复制
{
  "name": "gatsby-plugin-i18n-l10n",
  [..]
  "peerDependencies": {
    "gatsby": "^4.x",
    "gatsby-source-filesystem": "^4.x",
    "react-helmet": "^6.1.x",
    "react-intl": "^5.20.x"
  },
  "peerDependenciesMeta": {
    "gatsby-source-filesystem": {
      "optional": true
    }
  },
  "devDependencies": {
    [..]
    "react": "18.0.0",
    "react-17": "npm:react@17.0.2",
    "react-dom": "18.0.0",
    "react-dom-17": "npm:react-dom@17.0.2",
    [..]
    "react-test-renderer": "18.0.0",
    "react-test-renderer-17": "npm:react-test-renderer@17.0.2",
    [..]
  },
  "dependencies": {
    "limax": "^3.0.0",
    "path-browserify": "^1.0.1"
  }
}

在研究这个问题时,我发现了另一个类似NPM: Link peer dependency to package alias的问题,它可以工作,但是npm install仍然抛出以下错误:

代码语言:javascript
运行
复制
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: gatsby-plugin-i18n-l10n@4.6.1
npm ERR! Found: react@18.0.0
npm ERR! node_modules/react
npm ERR!   dev react@"18.0.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@"17.0.2" from react-dom-17@17.0.2
npm ERR! node_modules/react-dom-17
npm ERR!   dev react-dom-17@"npm:react-dom@17.0.2" 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 install再次工作并帮助它自行解析包?

EN

Stack Overflow用户

发布于 2022-04-26 15:20:16

*我重写了我的评论,因为我一开始没有意识到这个问题

这是可能的,但您将需要手动编辑NPM的包锁文件.

具体步骤如下:

  1. 只在package.json文件中保留遗留依赖项,如下所示:

代码语言:javascript
运行
复制
    {
      "name": "npmpeerstest",
      "version": "1.0.0",
      "description": "",
      "type": "module",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@legacy/react": "npm:react@^17.0.2",
        "@legacy/react-dom": "npm:react-dom@^17.0.2"
      }
    }

  1. 运行npm安装,它应该传递ok
  2. 编辑包-lock.json,从这里:

代码语言:javascript
运行
复制
"node_modules/@legacy/react-dom": {
      "name": "react-dom",
      "version": "17.0.2",
      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
      "dev": true,
      "dependencies": {
        "loose-envify": "^1.1.0",
        "object-assign": "^4.1.1",
        "scheduler": "^0.20.2"
      },
      "peerDependencies": {
        "react": "17.0.2"
      }
    },

至:

代码语言:javascript
运行
复制
"node_modules/@legacy/react-dom": {
      "name": "react-dom",
      "version": "17.0.2",
      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
      "dev": true,
      "dependencies": {
        "loose-envify": "^1.1.0",
        "object-assign": "^4.1.1",
        "scheduler": "^0.20.2"
      },
      "peerDependencies": {
        "@legacy/react": "17.0.2"
      }
    },

请注意,我们需要手动设置react依赖项,以使用@legacy/react而不是react

  1. 向package.json添加新的依赖项,如下所示:

代码语言:javascript
运行
复制
{
  "name": "npmpeerstest",
  "version": "1.0.0",
  "description": "",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@legacy/react": "npm:react@^17.0.2",
    "@legacy/react-dom": "npm:react-dom@^17.0.2",
    "react": "18.0.0",
    "react-dom": "18.0.0"
  }
}

  1. 运行npm安装,所有这些都应该通过

*不要忘记提交包-lock.json进行修改,否则其他安装将失败。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71901747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档