![](/img/trans.png)
[英]How to run mocha tests and node in a single npm test command ? (CI)
[英]Mocha TS tests fail with `npm test` but not if run directly
在我的nodejs项目(用Typescript编写)中,我可以使用以下命令运行测试:
mocha --compilers ts:ts-node/register,tsx:ts-node/register
他们成功了。 我也在package.json文件中使用了此命令,以便
npm test
以相同的方式运行它们,但是在这种情况下,我得到:
Mikes-iMac:antlr4-graps mike$ npm test
> mocha --compilers ts:ts-node/register,tsx:ts-node/register
module.js:472
throw err;
^
Error: Cannot find module 'ts-node/register'
at Function.Module._resolveFilename (module.js:470:15)
我的package.json文件包含:
"scripts": {
"test": "mocha --compilers ts:ts-node/register,tsx:ts-node/register"
},
"devDependencies": {
"@types/chai": "^3.4.34",
"@types/mocha": "^2.2.32",
"@types/node": "^6.0.40",
"chai": "^3.5.0",
"mocha": "^2.5.3",
"typescript": "^2.0.3",
"vscode": "^1.0.0"
},
通过npm运行mocha的正确变体是什么?
问题是,无论如何, npm run <script>
通常npm run <script>
,特别是npm test
将使用/bin/sh
而不是您当前的shell运行命令,这可能有所不同。
由于您的依赖项中没有ts-node
,因此我假设它是全局安装的。 根据安装Node.js的方式, /bin/sh
可能最终使用与当前Shell不同的Node.js安装,因此没有相同的全局安装包。
如果我是对的,那么这两个命令将给出不同的结果:
$ which node
$ /bin/sh -c 'which node'
两种可能的解决方案:
ts-node
添加到您的项目的devDependencies
,然后将npm install
。 /bin/sh
使用与当前Shell相同的Node.js安装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.