当已经安装了karma时,出现"karma command not found"的错误提示。

70

我用node.js安装了karma。第一次在终端运行以下命令时失败了:

npm install -g karma

那个失败了,所以我决定使用:

sudo npm install -g karma
在输入密码后,似乎安装成功了。我复制了安装输出的一部分,也许对某个人有意义,并且与我的问题相关。在所有 npm http 消息之后,这是我看到的内容:
> ws@0.4.27 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/bufferutil.node
  SOLINK_MODULE(target) Release/bufferutil.node: Finished
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/validation.node
  SOLINK_MODULE(target) Release/validation.node: Finished
/usr/local/share/npm/bin/karma -> /usr/local/share/npm/lib/node_modules/karma/bin/karma
karma@0.8.6 /usr/local/share/npm/lib/node_modules/karma
├── pause@0.0.1
├── dateformat@1.0.2-1.2.3
├── xmlbuilder@0.4.2
├── colors@0.6.0-1
├── chokidar@0.6.2
├── growly@1.1.1
├── mime@1.2.9
├── q@0.9.6
├── rimraf@2.1.4 (graceful-fs@1.2.3)
├── coffee-script@1.6.3
├── minimatch@0.2.12 (sigmund@1.0.0, lru-cache@2.3.0)
├── optimist@0.3.5 (wordwrap@0.0.2)
├── glob@3.1.21 (inherits@1.0.0, graceful-fs@1.2.3)
├── LiveScript@1.0.1 (prelude-ls@1.0.1)
├── log4js@0.6.6 (dequeue@1.0.3, semver@1.1.4, async@0.1.15, readable-stream@1.0.2)
├── lodash@1.1.1
├── http-proxy@0.10.3 (pkginfo@0.2.3, utile@0.1.7)
├── istanbul@0.1.22 (abbrev@1.0.4, which@1.0.5, fileset@0.1.5, nopt@2.0.0, wordwrap@0.0.2, async@0.1.22, mkdirp@0.3.5, esprima@0.9.9, escodegen@0.0.24, handlebars@1.0.12)
└── socket.io@0.9.16 (base64id@0.1.0, policyfile@0.0.4, redis@0.7.3, socket.io-client@0.9.16)

然后,当我尝试运行以下命令来使用此命令创建karma配置文件时:

karma init karma.config.js

这是返回的消息:

-bash: karma: command not found

我之前尝试过在命令前使用sudo,但是结果还是一样。

有没有人知道出了什么问题? 非常感谢任何帮助。

*更新! 我决定检查一个名为builderror.log的文件, 位于:/usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws

它显示的内容如下:

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/eperez/.node-gyp/0.10.5"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.node-gyp"
gyp http GET http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.5/node-v0.10.5.tar.gz

1
似乎不在您的路径中,请使用 which karma 确认。我曾经遇到过 npm 将安装内容安装到不在默认路径中的情况,我想是在 Arch 上。但我不记得它去了哪里,抱歉:( PS 您可以执行 cd /; find|grep karma 命令来获取系统中所有带有 karma 的文件名或路径。 - Plato
我运行了这个命令,得到了以下结果。不过我不确定它的含义:用法: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression] - iChido
好的,抱歉你的“find”程序与我的不同。无论如何,您需要找到npm安装的位置,并确保将该文件夹添加到终端会话的路径中。对于我在Linux Mint上的安装,“npm -g”将东西放在“/usr/local/bin”中。 - Plato
我有相同的问题。没有任何建议/答案有帮助。 - Doug
116
命令行界面在一个单独的软件包中。要安装它,请使用以下命令:npm install -g karma-cli - mayankcpdixit
9个回答

254

@mayankcpdixit 在回答原问题时给出了答案,但我会在这里再次提供,以防有人错过。

你不需要卸载所有内容,如果我必须为每个尝试安装的npm包手动添加新path链接,我可能会自杀。

npm install -g karma-cli

嘭!现在你已经安装了Karma命令行,就像Grunt一样。


编辑提示:请不要忘记给@mayankcpdixit点赞,他直接在原帖中发表了评论,但实际上没有“回答”问题。


9
请记住,使用-g需要管理员权限,所以应该使用sudo npm install -g karma-cli ;) - sol4me

37

在您的~/.bash_profile(或类似文件)中,修改PATH以包含已安装的npm二进制文件:

在您的~/.bash_profile(或类似文件)中修改PATH,使其包括由npm安装的可执行文件:

export PATH="$PATH:/usr/local/share/npm/bin"

我曾经遇到同样的问题,发现这个解决方案比完全重新安装node更省时间且效果更好。

编辑其他人在bash_profile中也成功使用了这个方法。

export PATH="$PATH:/usr/local/lib/node_modules/karma/bin" 

9
我必须在~/.bash_profile中使用以下命令:export PATH="$PATH:/usr/local/lib/node_modules/karma/bin" - Jason Shah
1
无法决定是要确保Karma在我的路径中,还是彻底重新安装Node... +1 - Matt Jensen
无法使其正常工作。这是使用全局安装或 karma,对吗? - grant
@grant 很抱歉你无法让它正常工作(以及这个迟到的回复)。是的,这是使用全局安装的karma。 - Marty Cortez
@MartinCortez 没问题。我发现我的问题与节点前缀有关,它没有设置为应该设置的 /usr/local。https://dev59.com/zWUq5IYBdhLWcg3wF8dQ - grant
1
如果您正在使用 oh my zsh,请在 ~/.zshrc 中进行编辑。 - DamongoCoder

15
推荐使用Command-Line-Interface(karma-cli)安装karma,它会负责获取适当的karma。你也可以为每个项目安装不同的本地版本,karma-cli将选择适当的版本。
从karma的安装页面:
键入./node_modules/karma/bin/karma start很烦人,因此您可能会发现全局安装karma-cli很有用:
npm install -g karma-cli

现在,请通过输入以下命令检查是否已安装Karma:

karma start

您还可以通过进入以下目录来检查Karma是否已安装:

cd /usr/local/lib/node_modules/karma

祝你好运!


2

在使用sudo npm install karma安装karma后,我需要添加export PATH="$PATH":/usr/local/lib/node_modules/npm/node_modules/karma/bin

希望这有所帮助。


2

不需要完全卸载node.js

只需

sudo rm -rf /usr/local/lib/node_modules/npm/

首先,安装node.js

然后,重新安装karma

这个方法对我很有效。


1

我也遇到了同样的问题。看起来 Karma 命令行工具是一个独立的包,可以通过以下命令进行安装:

npm install -g karma-cli


1
供大家参考:我还必须将 karma-cli 添加到我的 package.json 中,这样它才能在 Circle CI 上运行。 - Rimian

1

只需前往test.sh:

找到: $BASE_DIR/../node_modules/karma/bin/karma start $BASE_DIR/../config/karma.conf.js $*

替换为: /usr/local/bin/karma start $BASE_DIR/../config/karma.conf.js $*

或者: karma start $BASE_DIR/../config/karma.conf.js $*


0

当从Karma 0.10升级到0.12时,karma可执行文件的链接被移除。

您可以通过以下方式获取它:

cd node_modules/.bin
ln -s ../karma/bin/karma karma

-21

尝试重新安装node.js。有很多安装方法,但我建议从nodejs.org下载。

如果这样还不行,您可以尝试重新安装karma。


我最初是通过Homebrew安装了Node。我取消了Node的链接,然后从官网下载了Node.js。安装了pkg文件,现在一切似乎都正常工作了。谢谢! - iChido

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接