我的环境:
- Ubuntu版本16.04.6 LTS
- 节点v8.17.0
- 网络风暴2019.3.3
- Mocha 7.1.0
嗨!
我刚开始学习MOCHA。
我在运行测试时出现以下错误:
Error: cannot find the module: FirstModuleToIncludeByMyModuleToBeTested
其中FirstModuleToIncludeByMyModuleToBeTested是我正在测试的单元使用的模块。我正在测试的单元包括的所有模块都有相同的问题。这个项目在Node和webstorm上运行得很好,当他们不在Mocha下工作时,他们都可以找到所有的库。
我已经安装了MOCHA,并且我已经在运行独立的测试(不喜欢这个项目(。到目前为止一切都很好,直到我尝试在一个真正的项目上测试一个模块。当我尝试运行测试时,mocha可以找到我正在测试的模块,但它不能找到该模块正在使用的模块(所有模块都在同一项目路径下(。。。通过网络风暴和命令行,我遇到了同样的问题,并得到了同样的错误消息…所有模块的路径都是相对于项目文件夹的根目录的,当不是MOCHA时,网络风暴和nodeJ可以运行。
我在网络风暴上尝试了几个关于项目和摩卡测试的工作路径的选项……但没有解决任何问题……我把测试文件夹放在project src文件夹下。此外,我还尝试在要测试的javascript模块所在的同一文件夹中使用mocha测试文件。
我已经尝试了所有Mocha镶嵌选项,如全球和本地项目。
npm install --global mocha
这是我得到的完整错误消息:
mymachine:$mocha MyMochaTest.js
> Error: Cannot find module 'x/MyProject/Folder1/Folder2/
> FirstModuleToIncludeByMyModuleToBeTested'
> at Function.Module._resolveFilename (module.js:548:15)
> at Function.Module._load (module.js:475:25)
> at Module.require (module.js:597:17)
> at require (internal/module.js:11:18)
> at Object.<anonymous> (/home/myuser/Desenv/Git/MyProjec/Folder3/Folder4/MyModuleToBeTested.js:1:80)
> at Module._compile (module.js:653:30)
> at Object.Module._extensions..js (module.js:664:10)
> at Module.load (module.js:566:32)
> at tryModuleLoad (module.js:506:12)
> at Function.Module._load (module.js:498:3)
> at Module.require (module.js:597:17)
> at require (internal/module.js:11:18)
> at Object.<anonymous> (/home/myuser/Desenv/Git/MyProjec/MochaTests/MyMochaTest.js:4:23)
> at Module._compile (module.js:653:30)
> at Object.Module._extensions..js (module.js:664:10)
> at Module.load (module.js:566:32)
> at tryModuleLoad (module.js:506:12)
> at Function.Module._load (module.js:498:3)
> at Module.require (module.js:597:17)
> at require (internal/module.js:11:18)
> at /usr/lib/node_modules/mocha/lib/mocha.js:314:36
> at Array.forEach (<anonymous>)
> at Mocha.loadFiles (/usr/lib/node_modules/mocha/lib/mocha.js:311:14)
> at /usr/lib/node_modules/mocha/lib/mocha.js:347:12
> at new Promise (<anonymous>)
> at Mocha.loadFilesAsync (/usr/lib/node_modules/mocha/lib/mocha.js:346:12)
> at singleRun (/usr/lib/node_modules/mocha/lib/cli/run-helpers.js:107:15)
> at exports.runMocha (/usr/lib/node_modules/mocha/lib/cli/run-helpers.js:144:11)
> at Object.exports.handler (/usr/lib/node_modules/mocha/lib/cli/run.js:306:11)
> at Object.runCommand (/usr/lib/node_modules/mocha/node_modules/yargs/lib/command.js:242:26)
> at Object.parseArgs [as _parseArgs] (/usr/lib/node_modules/mocha/node_modules/yargs/yargs.js:1087:28)
> at Object.parse (/usr/lib/node_modules/mocha/node_modules/yargs/yargs.js:566:25)
> at Object.exports.main (/usr/lib/node_modules/mocha/lib/cli/cli.js:68:6)
> at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/mocha:133:29)
> at Module._compile (module.js:653:30)
> at Object.Module._extensions..js (module.js:664:10)
> at Module.load (module.js:566:32)
> at tryModuleLoad (module.js:506:12)
> at Function.Module._load (module.js:498:3)
> at Function.Module.runMain (module.js:694:10)
> at startup (bootstrap_node.js:204:16)
> at bootstrap_node.js:625:3
我找到了解决方案。
在命令行上,测试所在的位置,在项目路径内。
$ export NODE_PATH=<path to my project root>.