nodemon:“mocha”不被识别为内部或外部命令,可执行程序或批处理文件。

17

在Windows 10上运行Node.js项目的test,需要在package.json中添加以下行:

"test": "nodemon --exec 'mocha -R min'"

我得到:
>  nodemon --exec 'mocha -R min'  

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `'mocha -R min'`
''mocha' is not recognized as an internal or external command,
operable program or batch file.
[nodemon] app crashed - waiting for file changes before starting...
rs
[nodemon] starting `'mocha -R min'`
''mocha' is not recognized as an internal or external command,
operable program or batch file.
[nodemon] app crashed - waiting for file changes before starting...

如果有人因为直接运行 mocha(而不是使用 nodemon)而搜索错误消息并来到这里,我在 Windows 上也遇到了这个问题,尽管我已经运行了 npm i。我不得不再次显式地运行 npm i -D mocha,然后它就可以工作了。 - Neo
10个回答

37

那行代码能正常工作:

"test": "nodemon --exec \"mocha -R min\""

在 package.json 文件中


2
谢谢。为什么第一个语法只对一些人有效? - Nave Hazan
2
这是一个仅限于 Windows 的问题。 - codefreaK

7

全局安装mocha,它就能工作了。

npm install -g mocha --save-dev


5

1
"test": "mocha **/*.test.js",
"test-watch": "nodemon --exec \"npm test\""

对于运行
npm run test-watch

1
这与问题有何关联? - Neeraj Sewani

1
我是一名非Windows内核或任何其他专家。在我的情况下,测试脚本始终出现错误,并显示消息“npm不被识别为内部或外部命令。”
a)当我将其设置为

"test": "mocha **/*.test.js",
"test-watch": "nodemon --exec 'npm test'"

它运行了几次后停止,并出现错误,所以当我切换到...
"test": "mocha **/*.test.js",
"test-watch": "nodemon --exec \"npm test\""

我一直遇到npm未被识别的错误,无论我按了多少次Ctrl c,nodemon都不会停止。

我已经尝试重启电脑、卸载并重新安装nodeJs、更新控制面板-用户账户-环境变量中的PATH变量等步骤,但似乎没有任何进展。

这让我相信,无论是nodemon还是mocha,在某个地方或某种情况下出现了问题,导致它们一直挂起,所以即使我修改为使用双引号进行转义,也没有用。

"test": "mocha **/*.test.js",
"test-watch": "nodemon --exec \"npm test\""

我仍然收到相同的错误。
b) 然后,我将键的名称从test-watch更改为test-new。
"test": "mocha **/*.test.js",
"test-new": "nodemon --exec \"npm test\""

并运行 npm run test-new 每个测试都很好地运行。

想象一下...

因此,我认为我将坚持在不同项目之间保持唯一的测试脚本名称。我没有其他解释... 有人可以解释一下吗?请这样做...


1

要执行npm test命令,请使用-g全局安装mocha。

命令:npm install mocha -g

我遇到了同样的问题,在全局安装mocha后问题得以解决。 前提是您的项目中已准备好所有依赖项。


1

如果您在使用 git-bash 并且使用的是 Windows 操作系统,请检查您的 NODE_ENV=development。由于某种原因,它默认为生产模式。

$ echo $NODE_ENV

使用 --production 标志(或当 NODE_ENV 环境变量设置为 production 时),npm 将不会安装列在 "devDependencies" 中的模块。
您可以通过检查 node_modules/ 文件夹并查看是否安装了 mocha 来验证这一点。如果没有:
$ npm install --only=dev

也:
$ NODE_ENV=development
$ npm i -D mocha

会起作用的。

哇,我正在与一家拒绝为我提供MacOS工作环境的公司合作,所以你的解决方案非常有帮助。 - Daniel

0

另一种方法是将mocha路径添加到环境变量中,然后重新启动bash。 在您的编辑器中,导航到mocha的bin文件夹,并将两个路径添加到系统环境中。 所有已说明的脚本选项都适用于此方法。

"scripts": {
    "test": "nodemon --exec \"mocha -R min\""
}

或者

"scripts": {
    "test": "nodemon --exec 'mocha -R min'"
}

或者

"scripts": {
    "test": "nodemon --exec mocha -R min"
 }

在 package.json 文件中,正确定义了依赖项。
希望这可以解决问题。

0

package.json 文件中,您需要在 "test" 脚本之后添加一个新的脚本。我们可以创建一个自定义脚本并将其命名为 "test-watch""test-watch" 的值为 "nodemon --exec \"npm test\""(即 "test-watch": "nodemon --exec \"npm test\"")。完成此步骤后,我们可以在终端中使用 npm run test-watch 命令。


0

使用 "npm run test" 命令,应该是 "nodemon --exec 'mocha -R min'"。对我来说,当使用先前的命令而不是 npm test & "nodemon --exec 'mocha -R min'" 时,它可以正常工作。


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