0

我在设置环境以运行 nyc 覆盖时遇到了一些麻烦。这是一个带有 mocha 的反应应用程序,用于单元测试。这个本来是别人在mac上开发的,所以package.json命令都是面向mac的。

首先,我的 package.json 脚本中有:

"test": "NODE_ENV=test nyc mocha --recursive --compilers js:babel-register --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"

NODE_ENV 报错,'NODE_ENV' is not recognized as an internal or external command, operable program or batch file.我发现是因为 NODE_ENV 不是windows语法,于是我试了一下:

"test": "set NODE_ENV=test&& nyc mocha --recursive --compilers js:babel-register --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"

随着 nyc 运行,但被列为 Unknown% (0/0) 并且节点给出以下错误:

internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'C:\path-to-folder\Desktop\github-apps\diabetesdashboard\node'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

然后我尝试了:

"test": "set NODE_ENV=test&& nyc&& mocha&& --recursive&& --compilers&& js:babel-register&& --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"

并且 nyc 仍然运行,但是说No test files foundnpm 失败:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! diabeties-server@0.0.0 test: `set NODE_ENV=test&& nyc&& mocha&& --recursive&& --compilers&& js:babel-register&& --require babel-polyfill`
npm ERR! Exit status 1

然后我尝试了所有可能的命令和 && 组合,但没有成功。我不确定还能尝试什么。文件夹结构为 root/test 和 root/src。我有一个也使用 Windows 的同事,他能够让单元测试工作而无需更改 package.json ......而且他不知道他做了什么让它工作。

我还应该提到,我不认为这是我的测试本身的问题。该应用程序通过 docker 运行,我可以通过 docker 运行我的单元测试和代码覆盖率。但是,通过 docker 运行不会生成 /coverage 文件夹供我查看覆盖率报告。

另请注意:package.json 中的启动脚本确实有一个“节点”选项。

"start": "node ./bin/www",

Windows 10 节点版本:v10.17.0 摩卡:^5.2.0 纽约:^13.1.0

4

0 回答 0