在我的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的正确变体是什么?
答案 0 :(得分:1)
问题在于,无论如何,但一般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安装。