Build passed 2 months ago; Same fails today

Today I cannot get my build to pass…
sh: 1: eslint: not found

If I comment out the lint command it fails on next…
sh: 1: mocha: not found

Weird thing is I reran a built that did pass 2 months ago and it fails today…
See #40 https://app.circleci.com/pipelines/github/patient-provider/vision

Hi,

Could you please SSH into a container and run the commands manually and see if you are getting the same error.

Regards,
Pawan Bahuguna

Thanks for looking into this. When I SSH into the container and run the commands manually I get the same errors. I would have included images of tails of logs, but I am limited in the number of images I can include.

Here’s tail of first log file:

Here’s tail of second log file:

Could you please check if mocha and eslist set as devDependencies in package.json? Are you setting NODE_ENV=production or something else that is only installing regular dependencies?

Also, please try to use latest node image and let us know how it goes.

Regards,
Pawan Bahuguna

Pawan,

Thanks for responding quickly. Below are the answers to your questions/suggestions. Everything seems in order, but build fails.

  • eslint and mocha are devDependencies
    “eslint”: “^6.8.0”,
    “eslint-config-prettier”: “^5.1.0”,
    “eslint-plugin-prettier”: “^3.1.3”,
    “mocha”: “^6.2.3”,

  • I’m not using NODE_ENV.

  • I changed the image to circleci/node:10.16.0-buster-browsers

Limited on number of links I may provide in reply…Here are linked to package.json and config.yml

This was a bit of a puzzler! It looks like at some point, the node_modules directory was added to the git repository.

Because of this, the install was skipping for most of the dependencies. When the node_modules was committed, it did not have the .bin directory. It actually looks like node_modules/.bin was explicitly excluded in the .gitignore file

So to adjust this, I would follow this series of steps

  1. git rm -r node_modules
  2. git commit -m "Remove node_modules"
  3. Edit the .gitignore file and remove the entry node_modules/**/.bin/ and other node_modules exclusions
  4. Ignore the entire node_modules directory in the .gitignore with simply node_modules/
  5. git add .gitignore
  6. git commit -m "Ignore entire node_modules directory"
  7. Edit the .circleci/config.yml and increment the cache keys prefixes from v1 to v2
  8. git add .circleci/config.yml
  9. git commit -m "Increment CircleCI cache keys"
  10. git push origin master

That should now populate the node_modules/.bin directory which has the symlinks that are included in the $PATH environment variable when running scripts via npm run

Boom! Thanks for your help. This worked, though I had to increment cache to V3 since I already had V2 cache.