Подтвердить что ты не робот

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 - это строка текущего пути проекта.

Вот моя конфигурация jest в package.json

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

Кто-нибудь столкнулся с этой ошибкой и знает, как ее исправить?

4b9b3361

Ответ 1

Просто столкнулся с той же проблемой. Если вы внимательно посмотрите на трассировку стека, вы заметите, что вы запускаете две разные настройки 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), который должен решить проблему.

Ответ 2

Это произойдет, если вы обновите jest в своем проекте, но запустите его, используя только jest из командной строки (не из node_modules).

Чтобы исправить это, вам нужно обновить глобальную шутку:

npm install -g jest

Ответ 3

У меня была такая же проблема. Я передавал строку в параметр "projects" вместо массива.

Обертка строки 'projectPath' в [] исправила ее для меня (она находится внутри задачи Gulp):

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

Ответ 4

Я столкнулся с той же проблемой с локальными и проектными установками jest-cli. Я удалил установку проекта jest-cli и решил проблему.