繁体   English   中英

Mocha TS测试因npm test而失败,但如果直接运行则不会失败

[英]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'

两种可能的解决方案:

  1. ts-node添加到您的项目的devDependencies ,然后将npm install
  2. 确保/bin/sh使用与当前Shell相同的Node.js安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM