web-dev-qa-db-ja.com

projects.mapはjest-cliの関数ではありません

私は反応アプリを書いて、それを冗談でテストしています。ただし、ターミナルからjestコマンドを実行するたびに、このエラーが発生します。

TypeError: projects.map is not a function
    at Object.<anonymous> (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:172:28)
    at next (native)
    at step (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:18:30)
    at /Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:34:14
    at Object.<anonymous> (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:15:12)
    at Object.module.exports [as runCLI] (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:2 03:17)
    at Object.run (/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/build/cli/index.js:42:17)
    at Object.<anonymous> (/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/bin/jest.js:16:25)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)

node_modulesエラーの原因となっているコード行を確認するには、projectsはプロジェクトの現在のパスの文字列です。

これがpackage.json

  "jest": {
    "transform": {
      ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ]
  }

誰かがこのエラーに遭遇し、それを修正する方法を知っていますか?

19
davidhu

同じ問題が発生しました。スタックトレースをよく見ると、2つの異なるJestセットアップを実行していることがわかります。

グローバルにインストールされたjest:

...(/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/bin/jest.js:16:25)

プロジェクトからの冗談:

...(/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:172:28)

彼らはおそらく異なる(そして互換性のない)バージョンを持っています。プロジェクト(またはグローバルnode_modules)からjestを削除すると、問題が解決します。

16
jafrog

これは、プロジェクトのjestを更新したが、コマンドラインから(node_modulesからではなく)jestだけを使用して実行した場合に発生します。

修正するには、グローバルjestを更新する必要があります。

npm install -g jest

7
Rick Hanlon II

同じ問題がありました。配列ではなく文字列を「projects」パラメーターに渡していました。

文字列 'projectPath'を[]でラップすると修正されました(これはGulpタスク内にあります):

var jestCLI = require('jest-cli');
...
jestCLI.runCLI({'onlyChanged': true}, [projectPath], callback);
3
kromakollision

私はjest-cliのローカルおよびプロジェクトのインストールで同じ問題に遭遇しました。 jest-cliのプロジェクトインストールを削除し、問題を解決しました。

0
Anuradha