Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJonathan Grieve
Treehouse Moderator 91,253 PointsMocha not installing after running npm install
I'm not sure what it is I;m doing wrong here, maybe a problem with my package.json file?
$ npm install --save-dev mocha chai
npm WARN package.json npm@0.0.1 No repository field.
npm WARN package.json npm@0.0.1 No README data
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
chai@3.5.0 ..\node_modules\chai
├── assertion-error@1.0.1
├── type-detect@1.0.0
└── deep-eql@0.1.3 (type-detect@0.1.1)
mocha@2.5.3 ..\node_modules\mocha
├── escape-string-regexp@1.0.2
├── diff@1.4.0
├── growl@1.9.2
├── commander@2.3.0
├── supports-color@1.2.0
├── to-iso-string@0.0.2
├── debug@2.2.0 (ms@0.7.1)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
└── glob@3.2.11 (inherits@2.0.1, minimatch@0.3.0)
And then the console returns
$ mocha
bash: mocha: command not found
When trying to return the empty test. What's happening? :-)
5 Answers
akak
29,445 PointsYou need to install mocha globally to be able to run it from command line.
sudo npm install -g mocha
Robert Schaap
19,836 PointsAs per akak's answer you need to install mocha globally. If you don't want to do that and you ran npm init
before, just go into your package.json
and change the test script to:
"scripts": {
"test": "mocha main_test.js"
},
Then run npm test
from the command line and it should work.
Gabbie Metheny
33,778 PointsYou can also put "test": "mocha"
under scripts
in your package.json
without a specific file. If you have a test
folder in the root of your project, running npm test
will default to using the files in that folder. Otherwise you can append your file path at the end of the command, i.e. npm test main_test.js
.
Adam Fields
Full Stack JavaScript Techdegree Graduate 37,838 PointsNPM installs binaries to the node_modules/.bin
folder. When you install mocha locally, and try to run it from the root of your project, your computer obviously doesn't see a binary called mocha
.
Installing a package globally adds it to a directory in your PATH
, which means your computer will look through the directories in your PATH
until it finds it.
When running an NPM script (like npm test
), NPM will know to look in the node_modules/.bin
folder.
Alecia Mason
1,949 PointsIn case you don't want to install it globally, and follow the video closer, before run npm install mocha --save-dev
, you should run npm init
. This creates a package.json
file at the root of your project which has meta data like the project's dependancies.
Jonathan Grieve
Treehouse Moderator 91,253 PointsThanks Alecia,
I'll make a note of this and try installing it as save--dev again the next time i try unit testing. But it works just as well when i type npm. In fact when i caught up just now it seemed to be the only way to run a test. And all tests in the project.
Head London
1,716 PointsIm having issues with this as well...
in..
/Users/USER/workspace/TREEHOUSE/Unit-testing/battleship-and-tests
i ran
npm init
which gives me
USERS-MacBook-Pro:battleship-and-tests sam$ ls
node_modules package.json
then
npm install --save-dev mocha chai
and get nothing when running mocha
USERS-MacBook-Pro:battleship-and-tests sam$ mocha
-bash: mocha: command not found
MAURO MARTINEZ
3,089 Pointsi had to install mocha gloabally...
Rebekah Shaw
18,687 PointsI'm having the same problem
Jonathan Grieve
Treehouse Moderator 91,253 PointsJonathan Grieve
Treehouse Moderator 91,253 PointsThanks,
I wonder why it wasn't done this way in the video yet that's the exact answer in the code challenge. :-)
By the way I was able to run a test with Mocha using
npm test.
Not sure why this is :-)
John Stratton
18,726 PointsJohn Stratton
18,726 PointsYou can fix NPM permissions so you don't have to type
sudo
before installing an node module globally. https://docs.npmjs.com/getting-started/fixing-npm-permissions