javascript - projects.map nie je funkcia pre jest-cli


Píšem aplikáciu v Reacte a testujem ju pomocou Jestu. Avšak vždy, keď spustím príkaz jest z terminálu, vyskočí mi táto chyba.

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)

Vstúpil som do node_modules, aby som sa pozrel na riadok kódu, ktorý spôsobuje chybu, projects je reťazec aktuálnej cesty projektu.

Tu je moja konfigurácia jest v package.json

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

Stretol sa niekto s touto chybou a vie, ako ju opraviť?

Odpoveď č. 1

Práve som narazil na rovnaký problém. Ak sa pozriete pozorne na svoj stack trace, všimnete si, že spúšťate dve rôzne konfigurácie Jest:

Globálne nainštalovaný jest:

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

Jest z projektu:

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

Pravdepodobne majú rôzne (a nekompatibilné) verzie. Ak odstránite Jest zo svojho projektu (alebo z globálneho node_modules), malo by to vyriešiť problém.

Odpoveď č. 2

Toto sa stane, ak aktualizujete jest vo vašom projekte, ale spustíte ho len pomocou jest z príkazového riadku (nie z node_modules).

Na opravu budete musieť aktualizovať svoj globálny jest:

npm install -g jest

Súvisiace články