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

Ste*_*vic 6 heroku node.js reactjs package.json next.js

我在 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
Run Code Online (Sandbox Code Playgroud)

我的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"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

Cir*_*四事件 11

如果无法在本地重现,请设置package.jsonengines:以匹配您的本地开发

这不是OP的确切问题,因为他们已经在engines:本地指定和重现,所以他们需要的肯定是首先在本地解决它,这是安装npm包时无限无法解决依赖树错误的子集

node_modules但即使在 delting和之后,我也无法在本地重现package-lock.json,所以一旦我设置Heroku 尊重的engines:,以匹配我的本地工作设置和:node --versionnpm --version

  "engines": {
    "node": "14.17.0",
    "npm": "6.14.13"
  },
Run Code Online (Sandbox Code Playgroud)

它开始在 Heroku 上工作。这是我添加了失败的package.jsonengines。错误是:

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
Run Code Online (Sandbox Code Playgroud)

在修复之前,Heroku 日志显示它正在使用:

remote:        Downloading and installing node 16.14.0...                                                                                                                                                                                                                       
remote:        Using default npm version: 8.3.1
Run Code Online (Sandbox Code Playgroud)

因此,您应该始终、始终设置为engines与 Heroku 项目上的本地设置相匹配。


小智 5

Ciro Santilli 的方法解决了我的问题:

我将这些行添加到 package.json 并解决了问题:

  "engines": {
    "node": "16.x",
    "npm": "8.5.5"
  },
Run Code Online (Sandbox Code Playgroud)

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


Ste*_*vic 1

  1. 我安装这些旧软件包npm install --force
  2. 我跑npm outdated
  3. 我看到哪些包裹是红色的
  4. 我确实从当前版本升级到想要的版本npm install --save packagename@wanted_version
  5. 删除项目中可能有的所有空文件
  6. 已上传至git
  7. 部署到 Heroku