問候我對 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"
]
}
}
uj5u.com熱心網友回復:
如果無法在本地復現,請設定 package.jsonengines:以匹配您的本地開發
這不是 OP 的確切問題,因為他們已engines:在本地指定和復制,所以他們肯定需要先在本地解決它,這是安裝 npm 包時無限無法解決依賴樹錯誤的子集
node_modules但是即使在洗掉和之后我也無法在本地復制package-lock.json,所以一旦我設定engines:了Heroku 尊重的 ,以匹配我的本地作業設定node --version并npm --version使用:
"engines": {
"node": "14.17.0",
"npm": "6.14.13"
},
它開始在 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
在修復之前,Heroku 日志顯示它正在使用:
remote: Downloading and installing node 16.14.0...
remote: Using default npm version: 8.3.1
uj5u.com熱心網友回復:
您的鎖定檔案包含沖突的依賴項。由于您能夠使用本地重現錯誤,因此npm ci我們有一種在本地測驗修復的好方法。
看起來您直接依賴于 React 16。這是您直接需要的東西,還是只是 Next.js 的依賴項?
如果它不是您直接需要的東西,請按照 Next.js 檔案對其進行升級:
npm install react@latest react-dom@latest
那應該修改你的package-lock.json. 然后嘗試再次從鎖定檔案安裝npm ci. 如果這樣可以解決問題,請提交更改并重新部署。
另一方面,如果你直接依賴 React 16 并且無法升級,你將不得不考慮回滾到 Next.js 的早期版本。
uj5u.com熱心網友回復:
- 我安裝這些舊包
npm install --force - 我跑
npm outdated - 我看到什么包裹是紅色的
- 我確實從當前版本升級到想要的版本
npm install --save packagename@wanted_version - 洗掉專案中可能存在的任何空檔案
- 上傳到 git
- 部署到 Heroku
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/428156.html
