NodeJS 使用Mocha进行单元测试失败

csga3l58  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(141)

我正在熟悉用Mocha编写单元测试,在使用"npm test"命令时遇到了一个问题:

'MochaChai\testing-callbacks\node_modules\.bin\' is not recognized as an internal or external command,

operable program or batch file.
node:internal/modules/cjs/loader:1078
  throw err;
  ^

Error: Cannot find module '(...)\Desktop\exercisesJS\mocha\bin\mocha.js'
    at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

我知道我的file.js,file.test.js,node_modules和package.json是正确的,因为我正在学习udemy教程。当我运行时,它也得到了证实:./node_modules/.bin/mocha "test/**/*.test.js"直接在终端,它返回:

calculateSquare
    ✔ Should return 4 if passed 2

  1 passing (11ms)

我的理解是,Mocha可以工作,但问题在于它是如何被npm处理的。我继续检查“where npm”,它返回:

C:\Program Files\nodejs\npm

C:\Program Files\nodejs\npm. cmd
所以,后来我检查了系统环境变量,寻找一些不合适的地方,但一切似乎都很好(没有NODE_PATH)
后来,我卸载了mocha、node_modules、package-lock.json,并通过npm重新安装。结果一样。
最后,我重新安装了Node.js和Visual Studio Code。没有变化。
我想这一定是和路径有关,但我检查了四遍。
我想知道是否有人有类似的问题,是否有什么我可以做的更好地理解发生了什么

oaxa6hgo

oaxa6hgo1#

真是松了口气,解决了。解决方案确实是直接在package.json文件的测试脚本中指定安装在我项目的node_modules目录中的Mocha二进制文件的完整路径。赢家:

"scripts": { "test": "node ./node_modules/mocha/bin/mocha './test/**/*.test.js'"}

这是因为它不依赖于shell来识别和执行mocha命令;它只需要node,这是一个公认的命令,因为它是全局安装的。
我尝试过的其他路径的变化(对我不起作用,但也许它会帮助别人...?):
1.

"test": "./node_modules/mocha/bin/mocha './test/**/*.test.js'"
"test": "npx mocha './test/**/*.test.js'"
"test": "mocha './test/**/*.test.js'"

简单的“测试”:“摩卡”没有起作用。我调查了可能的原因:

  • 如果没有正确安装Mocha,或者安装已损坏。
  • 如果与全局安装的Mocha版本存在冲突。
  • 如果您的Node.js或npm安装有问题。
  • 如果系统的PATH设置配置不正确。

此问题似乎是由于操作系统或命令shell解释和执行脚本命令的方式不同而引起的。在本例中,它似乎与我工作的Windows环境有关。
我希望这对其他新手有帮助!

相关问题