2016-12-31 79 views
0

運行在我的項目的NodeJS(寫在打字稿)我可以用這個命令來運行我的測試:摩卡TS測試失敗,`NPM test`但如果直接

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運行摩卡?

回答

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' 

兩個可能的解決方案:

  1. 添加ts-nodedevDependencies的你的項目和npm install
  2. 確保/bin/sh使用與當前shell相同的Node.js安裝。
+0

你擊中了要害。我以爲我有ts節點作爲開發依賴,但沒有實際檢查。添加完成後,所有內容都開始與npm一起工作。 –

+0

快樂它幫助你;) –

相關問題