我正在熟悉用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。没有变化。
我想这一定是和路径有关,但我检查了四遍。
我想知道是否有人有类似的问题,是否有什么我可以做的更好地理解发生了什么
1条答案
按热度按时间oaxa6hgo1#
真是松了口气,解决了。解决方案确实是直接在package.json文件的测试脚本中指定安装在我项目的node_modules目录中的Mocha二进制文件的完整路径。赢家:
这是因为它不依赖于shell来识别和执行mocha命令;它只需要node,这是一个公认的命令,因为它是全局安装的。
我尝试过的其他路径的变化(对我不起作用,但也许它会帮助别人...?):
1.
简单的“测试”:“摩卡”没有起作用。我调查了可能的原因:
此问题似乎是由于操作系统或命令shell解释和执行脚本命令的方式不同而引起的。在本例中,它似乎与我工作的Windows环境有关。
我希望这对其他新手有帮助!