109
votes

I'm trying to run karma as part as an angular-seed project, after installing karma using

npm install -g karma

I get:

'karma' is not recognized as an internal or external command, operable program or batch file.

when i'm trying to run test.bat from angular-client\scripts, the content of this file is:

set BASE_DIR=%~dp0

karma start "%BASE_DIR%..\config\karma.conf.js" %*

I also tried to navigate to "\AppData\Roaming\npm\node_modules\karma\bin" and saw karma file, when I'm trying to run it I get again:

'karma' is not recognized as an internal or external command, operable program or batch file.

Any suggestions? If not please suggest how to use jasmine without karma.

Thanks.

8
Try npm install karma -gSiva Tumma
@lior karma is a synonym for karma-runner, so it automatically got mapped when you edited.Flexo♦
@Flexo, thanks. I didn't know that, however I believe that it need to be also tag specific like html will include html5 (maybe?) or even html5-canvasLior Elrom

8 Answers

322
votes

The command line interface is in a separate package.

To install this use:

npm install -g karma-cli

17
votes

karma-cli

It is recommended to install karma with its Command-Line-Interface (karma-cli) which will take care of fetching the appropriate karma. You can also install a different local version specific to each project you're working on and karma-cli will pick the appropriate one.

From the karma installation page:

Typing ./node_modules/karma/bin/karma start sucks so you might find it useful to install karma-cli globally:

npm install -g karma-cli

Now, check that karma was installed by typing:

which karma  //echo something like: /usr/local/bin/karma

and check that karma server is working (ctr+c to quit):

karma start 

You can also check that karma was installed by going to this directory:

cd /usr/local/lib/node_modules/karma

Good luck!

7
votes

On windows when you install a npm (non-globally - so without the -g flag), the executable commands are linked in the node_modules\.bin folder.

For example:

powershell> .\node_modules\.bin\karma start

powershell> .\node_modules\.bin\karma run

6
votes

I had the same issue and fixed it by correcting my PATH environment variable.

STEP 1: go to the following path and ensure karma.cmd is present at the location given below

[Nodejs folder path]\node_modules\.bin <=> C:\Program Files\nodejs\node_modules\.bin

STEP 2: If present go to STEP 3, If not present run the following command npm install -g karma

STEP 3: Open environment variables and edit PATH

STEP 4: Add the following at the end :

[Nodejs folder path]\node_modules\.bin; <=> "C:\Program Files\nodejs\node_modules\.bin"

Log out your session and it will work for sure.

4
votes

Based upon your directory using \AppData\Roaming, you're on Windows and this error is usually because the path to the npm globals isn't in the Windows PATH or NODE_PATH environment variables.

Use SET to check the values you are using for the paths and if your npm directory isn't listed, that will be the issue.

If you don't want npm to save to this directory, check the npm configuration options and the npm folders docs to see what you can change in this regard...

2
votes

'karma' is not recognized as an internal or external command, operable program or batch file.

If the above mentioned solution does not work, than The cause of issue is previous version of nodejs. So uninstall the previous version of nodejs and re-install the latest version. It will resolve your issue. As I faced the same and by doing above changes it worked for me.

Thanks.

1
votes

Official documentation at https://karma-runner.github.io/0.12/intro/installation.html is confusing. It implies that npm install -g karma-cli is to install karma globally but it actually required for to run karma from command line.

-1
votes

I had same: 'karma' is not recognized as an internal or external command, operable program or batch file. problem when i tried to install it directly to my project file. When i used npm install -g karma-cli to global install everything worked just fine.