Heroku Shopify应用程序错误'npm ERR!ERESOLVE无法解析依赖关系树'

9gm1akwq  于 2022-11-13  发布在  其他
关注(0)|答案(5)|浏览(142)

您好我有一个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

我的软件包. 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"
    ]
  }
}
bd1hkmkf

bd1hkmkf1#

Your lock file contains conflicting dependencies. Since you were able to reproduce the error locally using npm ci we have a good way to test a fix locally.
It looks like you are depending directly on React 16. Is that something that you need directly, or is it just a dependency for Next.js?
If it's not something you need directly, upgrade it per the Next.js docs :

npm install react@latest react-dom@latest

That should modify your package-lock.json . Then try installing from the lock file again with npm ci . If that fixes things, commit the change and redeploy.
On the other hand, if you are directly depending on React 16 and cannot upgrade you'll have to consider rolling back to an earlier version of Next.js.

puruo6ea

puruo6ea2#

如果您无法在本地复制,请设置package.json engines:以匹配您的本地开发

这不是OP的确切问题,因为他们指定了engines:并在本地复制,所以他们需要首先在本地解决它,这是无限Unable to resolve dependency tree error when installing npm packages的子集
但是,即使删除了node_modulespackage-lock.json,我也无法在本地复制,因此,只要我设置了engines:(Heroku尊重它),就可以将本地工作设置node --versionnpm --version与以下内容匹配:

"engines": {
    "node": "14.17.0",
    "npm": "6.14.13"
  },

它开始在Heroku上工作。这是我的失败的package.json,其中添加了engines。错误是:

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

因此,您应该Always,Always,将engines设置为与Heroku项目上的本地设置匹配。

ndh0cuux

ndh0cuux3#

西罗·桑蒂利的方法解决了我的问题:
我在package.json中添加了以下几行代码,问题得到了解决:

"engines": {
    "node": "16.x",
    "npm": "8.5.5"
  },

显然对我来说,我使用的“Knex”模块与较新的NPM不兼容(我不确定)。

fruv7luv

fruv7luv4#

1.我使用npm install --force安装这些旧软件包
1.我运行npm outdated
1.我看到红色的包裹
1.我使用npm install --save packagename@wanted_version从当前版本升级到想要的版本
1.删除项目中可能存在的任何空文件
1.已上传到git
1.部署到Heroku

mitkmikd

mitkmikd5#

您可以使用.npmrc

新版本的npm不允许您安装具有不同版本的对等依赖项的依赖项,因为这可能会导致破坏性更改。因此,如果您确信一切正常工作,没有任何问题,那么您可能有很好的测试。只需在您的npm脚本后添加--legacy-peer-deps--force(基本上它是npm i)。但它是如此恼人的写它,相反,你可以创建'.npmrc'文件在你的项目的根如下:

legacy-peer-deps=true
...

或者甚至:

force=true
...

现在,您不需要手动添加--legacy-peer-deps--force
ps.它还解决了Heroku不能显式使用npm i --legacy-peer-deps的问题。至少我不知道如何这样做。

相关问题