我正在尝试测试我的npm包,针对不同版本的React。因此,我在package.json
中为旧版本设置了别名。
{
"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
仍然抛出以下错误:
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
再次工作并帮助它自行解析包?
发布于 2022-04-26 15:20:16
*我重写了我的评论,因为我一开始没有意识到这个问题
这是可能的,但您将需要手动编辑NPM的包锁文件.
具体步骤如下:
{
"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"
}
}
。
"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"
}
},
至:
"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
{
"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"
}
}
*不要忘记提交包-lock.json进行修改,否则其他安装将失败。
https://stackoverflow.com/questions/71901747
复制相似问题