2017-05-07 12 views
13

Piszę aplikację reagowania i testuję ją z żartem. Jednak zawsze, gdy uruchamiam komendę jest z terminala, utrzymuję ten błąd.projects.map nie jest funkcją dla jest-cli

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) 

poszedłem do node_modules spojrzeć na linii kodu, który jest przyczyną błędu, projects jest ciągiem projektu bieżącej ścieżki.

Oto moja konfiguracja JEST w package.json

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

Czy ktoś napotkał ten problem i wie jak go rozwiązać?

+0

nie wiem dokładnie rozwiązanie tutaj, ale .map jest częścią prototyp tablicy. –

+0

Czy możesz pokazać swoją konfigurację żartu? Czy to nie sprawdza się we wszystkich testach lub tylko w jednym? – Nick

+0

@Nick, zaktualizowałem pytanie konfiguracjami żartów. To nie działa we wszystkich testach. Nawet jeśli usunę wszystkie testy, ten błąd nadal się pojawia. – davidhu2000

Odpowiedz

13

Wystąpił po prostu ten sam problem. Jeśli spojrzeć na ślad stosu ściśle zauważysz, że uruchomienie dwóch różnych ustawień żartem:

Globalnie zainstalowany JEST:

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

żartem z projektu:

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

Są prawdopodobnie mają różne (i niezgodne) wersje. Jeśli usuniesz żart z projektu (lub z globalnego node_modules), który powinien rozwiązać problem.

+2

Usunięcie Jest z projektu powinno zdecydowanie być ostatnią opcją. Każdy, kto przyjdzie do twojego projektu, lub nawet ty, za 6 miesięcy, będzie ci wdzięczny, gdy dowiesz się, jaka wersja polecenia "Działasz"/działa na twoim projekcie. –

7

Stanie się tak, jeśli zaktualizujesz program w swoim projekcie, ale uruchomisz go, używając tylko jest z wiersza poleceń (nie z node_modules).

Aby rozwiązać musisz zaktualizować swoją globalną żart:

npm install -g jest

0

Pobiegłem do tej samej kwestii z lokalnymi i projektu instalacji żartem-CLI. Usunąłem instalację projektu dowcipnisia-cli i rozwiązałem problem.

2

Miałem ten sam problem. Przekazywałem ciąg znaków do parametru 'projects' zamiast do tablicy.

Owijanie ciąg „projectPath” w [] stały się dla mnie (ta znajduje się wewnątrz zadania haustem):

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

Mój problem był podobny, gdy przekazałem w dirname zamiast [dirname]. W tej chwili jestem na v22, więc może powyższe odpowiedzi odnoszą się do poprzednich wersji. Ponowna instalacja nie rozwiązała problemu. – theoutlander