Heroku Shopify 应用程序错误 'npm ERR! ERESOLVE unable to resolve dependency tree'
Heroku Shopify Application Error 'npm ERR! ERESOLVE unable to resolve dependency tree'
您好 我对 Heroku 有疑问,因为它不想为我的 Shopify 应用程序安装旧版软件包,我的 Shopify 应用程序在 Github 上,我只是设置了我的应用程序需要的一切,但是当我在 Heroku 上部署主分支 我在下面的 Heroku 控制台中收到此错误,有人可以帮我解决这个问题吗?
-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/nodejs
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
USE_NPM_INSTALL=true
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=false
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version 16.x...
Downloading and installing node 16.14.0...
Using default npm version: 8.3.1
-----> Restoring cache
Caching has been disabled because NODE_MODULES_CACHE=false
-----> Installing dependencies
Installing node modules (package.json + package-lock)
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: shopify-app-node@1.0.0
npm ERR! Found: react@16.14.0
npm ERR! node_modules/react
npm ERR! react@"^16.10.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.2 || ^18.0.0-0" from next@12.0.10
npm ERR! node_modules/next
npm ERR! next@"^12.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 ERR!
npm ERR! See /tmp/npmcache.CTfHl/eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.CTfHl/_logs/2022-02-10T12_18_50_156Z-debug-0.log
-----> Build failed
We're sorry this build is failing! You can troubleshoot common issues here:
https://devcenter.heroku.com/articles/troubleshooting-node-deploys
Some possible problems:
- Node version not specified in package.json
https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
Love,
Heroku
! Push rejected, failed to compile Node.js app.
! Push failed
我的package.json
{
"name": "shopify-app-node",
"version": "1.0.0",
"description": "Shopify's node app for CLI tool",
"scripts": {
"test": "jest",
"dev": "cross-env NODE_ENV=development nodemon ./server/index.js --watch ./server/index.js",
"build": "NEXT_TELEMETRY_DISABLED=1 next build",
"start": "cross-env NODE_ENV=production node ./server/index.js"
},
"engines": {
"node": "16.14.0",
"npm": "8.4.1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Shopify/shopify-app-node.git"
},
"author": "Shopify Inc.",
"license": "MIT",
"bugs": {
"url": "https://github.com/shopify/shopify-app-node/issues"
},
"dependencies": {
"@babel/core": "7.12.10",
"@babel/polyfill": "^7.6.0",
"@babel/preset-env": "^7.12.11",
"@babel/register": "^7.12.10",
"@shopify/app-bridge-react": "^2.0.2",
"@shopify/app-bridge-utils": "^2.0.2",
"@shopify/koa-shopify-auth": "^4.1.2",
"@shopify/polaris": "^6.2.0",
"apollo-boost": "^0.4.9",
"axios": "^0.25.0",
"cross-env": "^7.0.3",
"dotenv": "^8.2.0",
"graphql": "^14.5.8",
"isomorphic-fetch": "^3.0.0",
"koa": "^2.13.1",
"koa-bodyparser": "^4.3.0",
"koa-compress": "^5.1.0",
"koa-cors": "0.0.16",
"koa-logger": "^3.2.1",
"koa-router": "^10.0.0",
"koa-session": "^6.1.0",
"mysql2": "^2.3.3",
"next": "^12.0.2",
"next-env": "^1.1.0",
"node-fetch": "^2.6.7",
"react": "^16.10.1",
"react-apollo": "^3.1.3",
"react-dom": "^16.10.1",
"sequelize": "^6.13.0",
"slugify": "^1.6.5",
"validator": "^13.7.0",
"webpack": "^4.44.1"
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.12.10",
"@babel/preset-stage-3": "^7.0.0",
"babel-jest": "26.6.3",
"babel-register": "^6.26.0",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.6",
"husky": "^4.3.6",
"jest": "26.6.3",
"lint-staged": "^10.5.4",
"nodemon": "^2.0.7",
"prettier": "2.2.1",
"react-addons-test-utils": "15.6.2",
"react-test-renderer": "16.14.0"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,css,json,md}": [
"prettier --write"
]
}
}
您的锁定文件包含相互冲突的依赖项。由于您能够使用 npm ci
在本地重现错误,我们有一个在本地测试修复的好方法。
看起来您直接依赖于 React 16。这是您直接需要的东西,还是只是 Next.js 的依赖项?
如果不是你直接需要的东西,upgrade it per the Next.js docs:
npm install react@latest react-dom@latest
那应该修改你的 package-lock.json
。然后使用 npm ci
再次尝试从锁定文件安装。如果这解决了问题,请提交更改并重新部署。
另一方面,如果您直接依赖 React 16 且无法升级,您将不得不考虑回滚到早期版本的 Next.js。
- 我用
npm install --force
安装这些旧软件包
- 我运行
npm outdated
- 我看到什么包是红色的
- 我使用
npm install --save packagename@wanted_version
从当前版本升级到想要的版本
- 删除项目中可能存在的所有空文件
- 上传到git
- 部署到 Heroku
如果无法在本地复现,请设置package.json engines:
以匹配本地开发
这不是 OP 的确切问题,因为他们已指定 engines:
并在本地复制,因此他们肯定需要首先在本地解决它,这是无限 [ 的一个子集=25=]
但是即使在删除 node_modules
和 package-lock.json
之后我也无法在本地复制工作设置 node --version
和 npm --version
具有:
"engines": {
"node": "14.17.0",
"npm": "6.14.13"
},
它开始在 Heroku 上工作。这是我添加了 engines
的失败 package.json。错误是:
remote: Installing node modules (package.json)
remote: npm ERR! code ERESOLVE
remote: npm ERR! ERESOLVE unable to resolve dependency tree
remote: npm ERR!
remote: npm ERR! While resolving: conduit-node@1.0.0
remote: npm ERR! Found: react@17.0.2
remote: npm ERR! node_modules/react
remote: npm ERR! react@"17.0.2" from the root project
remote: npm ERR!
remote: npm ERR! Could not resolve dependency:
remote: npm ERR! peer react@"^16.11.0" from swr@0.3.0
remote: npm ERR! node_modules/swr
remote: npm ERR! swr@"0.3.0" from the root project
在修复之前,Heroku 日志显示它正在使用:
remote: Downloading and installing node 16.14.0...
remote: Using default npm version: 8.3.1
因此,您应该始终,始终,设置 engines
以匹配您在 Heroku 项目上的本地设置。
您好 我对 Heroku 有疑问,因为它不想为我的 Shopify 应用程序安装旧版软件包,我的 Shopify 应用程序在 Github 上,我只是设置了我的应用程序需要的一切,但是当我在 Heroku 上部署主分支 我在下面的 Heroku 控制台中收到此错误,有人可以帮我解决这个问题吗?
-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/nodejs
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
USE_NPM_INSTALL=true
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=false
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version 16.x...
Downloading and installing node 16.14.0...
Using default npm version: 8.3.1
-----> Restoring cache
Caching has been disabled because NODE_MODULES_CACHE=false
-----> Installing dependencies
Installing node modules (package.json + package-lock)
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: shopify-app-node@1.0.0
npm ERR! Found: react@16.14.0
npm ERR! node_modules/react
npm ERR! react@"^16.10.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.2 || ^18.0.0-0" from next@12.0.10
npm ERR! node_modules/next
npm ERR! next@"^12.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 ERR!
npm ERR! See /tmp/npmcache.CTfHl/eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.CTfHl/_logs/2022-02-10T12_18_50_156Z-debug-0.log
-----> Build failed
We're sorry this build is failing! You can troubleshoot common issues here:
https://devcenter.heroku.com/articles/troubleshooting-node-deploys
Some possible problems:
- Node version not specified in package.json
https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
Love,
Heroku
! Push rejected, failed to compile Node.js app.
! Push failed
我的package.json
{
"name": "shopify-app-node",
"version": "1.0.0",
"description": "Shopify's node app for CLI tool",
"scripts": {
"test": "jest",
"dev": "cross-env NODE_ENV=development nodemon ./server/index.js --watch ./server/index.js",
"build": "NEXT_TELEMETRY_DISABLED=1 next build",
"start": "cross-env NODE_ENV=production node ./server/index.js"
},
"engines": {
"node": "16.14.0",
"npm": "8.4.1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Shopify/shopify-app-node.git"
},
"author": "Shopify Inc.",
"license": "MIT",
"bugs": {
"url": "https://github.com/shopify/shopify-app-node/issues"
},
"dependencies": {
"@babel/core": "7.12.10",
"@babel/polyfill": "^7.6.0",
"@babel/preset-env": "^7.12.11",
"@babel/register": "^7.12.10",
"@shopify/app-bridge-react": "^2.0.2",
"@shopify/app-bridge-utils": "^2.0.2",
"@shopify/koa-shopify-auth": "^4.1.2",
"@shopify/polaris": "^6.2.0",
"apollo-boost": "^0.4.9",
"axios": "^0.25.0",
"cross-env": "^7.0.3",
"dotenv": "^8.2.0",
"graphql": "^14.5.8",
"isomorphic-fetch": "^3.0.0",
"koa": "^2.13.1",
"koa-bodyparser": "^4.3.0",
"koa-compress": "^5.1.0",
"koa-cors": "0.0.16",
"koa-logger": "^3.2.1",
"koa-router": "^10.0.0",
"koa-session": "^6.1.0",
"mysql2": "^2.3.3",
"next": "^12.0.2",
"next-env": "^1.1.0",
"node-fetch": "^2.6.7",
"react": "^16.10.1",
"react-apollo": "^3.1.3",
"react-dom": "^16.10.1",
"sequelize": "^6.13.0",
"slugify": "^1.6.5",
"validator": "^13.7.0",
"webpack": "^4.44.1"
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.12.10",
"@babel/preset-stage-3": "^7.0.0",
"babel-jest": "26.6.3",
"babel-register": "^6.26.0",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.6",
"husky": "^4.3.6",
"jest": "26.6.3",
"lint-staged": "^10.5.4",
"nodemon": "^2.0.7",
"prettier": "2.2.1",
"react-addons-test-utils": "15.6.2",
"react-test-renderer": "16.14.0"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,css,json,md}": [
"prettier --write"
]
}
}
您的锁定文件包含相互冲突的依赖项。由于您能够使用 npm ci
在本地重现错误,我们有一个在本地测试修复的好方法。
看起来您直接依赖于 React 16。这是您直接需要的东西,还是只是 Next.js 的依赖项?
如果不是你直接需要的东西,upgrade it per the Next.js docs:
npm install react@latest react-dom@latest
那应该修改你的 package-lock.json
。然后使用 npm ci
再次尝试从锁定文件安装。如果这解决了问题,请提交更改并重新部署。
另一方面,如果您直接依赖 React 16 且无法升级,您将不得不考虑回滚到早期版本的 Next.js。
- 我用
npm install --force
安装这些旧软件包
- 我运行
npm outdated
- 我看到什么包是红色的
- 我使用
npm install --save packagename@wanted_version
从当前版本升级到想要的版本
- 删除项目中可能存在的所有空文件
- 上传到git
- 部署到 Heroku
如果无法在本地复现,请设置package.json engines:
以匹配本地开发
这不是 OP 的确切问题,因为他们已指定 但是即使在删除 它开始在 Heroku 上工作。这是我添加了 在修复之前,Heroku 日志显示它正在使用: 因此,您应该始终,始终,设置 engines:
并在本地复制,因此他们肯定需要首先在本地解决它,这是无限 node_modules
和 package-lock.json
之后我也无法在本地复制工作设置 node --version
和 npm --version
具有: "engines": {
"node": "14.17.0",
"npm": "6.14.13"
},
engines
的失败 package.json。错误是:remote: Installing node modules (package.json)
remote: npm ERR! code ERESOLVE
remote: npm ERR! ERESOLVE unable to resolve dependency tree
remote: npm ERR!
remote: npm ERR! While resolving: conduit-node@1.0.0
remote: npm ERR! Found: react@17.0.2
remote: npm ERR! node_modules/react
remote: npm ERR! react@"17.0.2" from the root project
remote: npm ERR!
remote: npm ERR! Could not resolve dependency:
remote: npm ERR! peer react@"^16.11.0" from swr@0.3.0
remote: npm ERR! node_modules/swr
remote: npm ERR! swr@"0.3.0" from the root project
remote: Downloading and installing node 16.14.0...
remote: Using default npm version: 8.3.1
engines
以匹配您在 Heroku 项目上的本地设置。