2016-12-31 15 views
0

を実行しない場合、私は、このコマンドを使用して私のテストを実行することができます。モカTSテストは `NPM test`で失敗したが(活字体で書かれた)私のnodejsプロジェクトで直接

mocha --compilers ts:ts-node/register,tsx:ts-node/register 

、彼らは成功します。

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ファイルが含まれています:

npm test 

しかし、この場合、私が得る、それらを同じ方法で実行されるように、私は私の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を実行する正しい方法は何ですか?

答えて

1

問題は、一般にnpm run <script>でもnpm testでも特に現在のシェルではなく、/bin/shを使用してコマンドを実行する可能性があります。

あなたの依存関係にts-nodeが存在しないため、グローバルにインストールされているものと想定しています。 Node.jsのインストール方法によっては、/bin/shが現在のシェルとは異なるNode.jsインストールを使用する可能性があります。したがって、グローバルにインストールされているパッケージは同じではありません。

私が正しい場合は、これらの2つのコマンドは異なる結果が得られます:

$ which node 
$ /bin/sh -c 'which node' 

2つの解決策:

  1. ts-nodeプロジェクトとnpm installあなたのdevDependenciesに追加します。
  2. /bin/shは、現在のシェルと同じNode.jsのインストールを使用していることを確認してください。
+0

あなたは頭の爪に当たっています。私はdev-dependencyとしてts-nodeを持っていると思っていましたが、実際にこれをチェックしませんでした。それを加えた後、すべてがnpmでも動作するようになりました。 –

+0

幸せに助けてくれました;) –

関連する問題