Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku Deployment Continues to Fail at "Pruning devDependencies" Step

I continue to have issues deploying to Heroku and I can't find out what is going wrong for the life of me. The Heroku error log tells me this after it successfully builds my react app:

-----> Caching build
       - node_modules

-----> Pruning devDependencies
       npm ERR! Cannot read property 'match' of undefined

Here is my package.json

{
  "name": "test",
  "version": "1.0.0",
  "homepage": "./",
  "description": "test",
  "main": "server.js",
  "node": "v12.13.1",
  "npm": "6.13.7",
  "scripts": {
    "heroku": "node server.js",
    "client-install": "npm install --prefix client",
    "build": "cd client && react-scripts build",
    "start": "node server.js",
    "server": "nodemon server.js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },
  "author": "John Doe",
  "license": "MIT",
  "dependencies": {
    "@material-ui/core": "^4.8.0",
    "axios": "^0.19.0",
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.18.3",
    "classnames": "^2.2.6",
    "concurrently": "^5.1.0",
    "date-fns": "^2.8.1",
    "debug": "^4.1.1",
    "depcheck": "^0.9.1",
    "eslint-plugin-flowtype": "^4.6.0",
    "express": "^4.16.4",
    "fibers": "^4.0.2",
    "growl": "^1.10.5",
    "heroku": "^7.35.1",
    "history": "^4.10.1",
    "is-empty": "^1.2.0",
    "jquery": "^3.4.1",
    "jsonwebtoken": "^8.3.0",
    "jwt-decode": "^2.2.0",
    "material-table": "^1.54.2",
    "material-ui": "^0.20.2",
    "minimatch": "^3.0.4",
    "moment": "^2.23.0",
    "mongodb": "^3.5.3",
    "mongoose": "^5.8.9",
    "mongoose-global": "^1.0.1",
    "morgan": "^1.9.1",
    "node-sass": "^4.13.0",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "plaid": "^4.6.0",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-ga": "^2.7.0",
    "react-plaid-link-button": "0.0.4",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.3.0",
    "react-slick": "^0.25.2",
    "react-stripe-elements": "^6.0.1",
    "react-vis": "^1.11.7",
    "redux-thunk": "^2.3.0",
    "sass": "^1.24.0",
    "slick": "^1.12.2",
    "slick-carousel": "^1.8.1",
    "typescript": "^3.7.4",
    "update-mongo": "0.0.4",
    "validator": "^12.2.0",
    "vis": "^4.21.0-EOL"
  },
  "devDependencies": {},
  "engines": {
    "node": "12.x"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

What is perhaps most frustrating, is that I was able to deploy successfully once the other day but I am not sure what changed. Going back through my git I can't see anything that would have made any difference.

Things I have tried:

  • removing package.json
  • adding "devDependencies": {} to my package.json (although I deployed successfully without it)
  • updating node and adding the engines section to my package.json to match.
  • running npm prune locally
  • ensuring that all packages are updated and referenced appropriately in package.json

Things that I suspect could be the issue:

  • Maybe somehow the current version of my app that is actively deployed on heroku is interfering with my new deployment? That being said i have tried scaling down dynos and deploying. Additionally the npm ERR! Cannot read property 'match' of undefined seems to indicate something else?
like image 228
wharfchillin Avatar asked Dec 11 '22 01:12

wharfchillin


1 Answers

Just run into this after my deploys inexplicably started failing after a number of successful ones.

Stopping heroku from caching node_modules seemed to do the trick for me.

heroku config:set NODE_MODULES_CACHE=false

Then git push heroku master

I don't have package-lock.json committed after hearing Heroku doesn't get on well with lockfiles, but wondering if that's the problem.

like image 132
Mike Callow Avatar answered Jan 04 '23 22:01

Mike Callow