Errore: è necessario includere un adattatore che implementa il metodo __karma __. Start


91

Sto cercando di aggiungere alcuni unit test a uno dei miei progetti.

Finora ho installato e configurato karma e ho installato jasmine. Ho un file di prova nella mia test/cartella.

Il server karma è stato avviato, la pagina del browser è pronta, ma karma runfallisce come segue:

$ karma run karma-conf.js 
[2014-06-14 15:19:11.046] [DEBUG] config - Loading config /foo/test/karma-conf.js
Waiting for previous execution...
Chrome 35.0.1916 (Linux) ERROR
  You need to include some adapter that implements __karma__.start method!

Questo messaggio di errore non fa bene a Google.

È qualcosa di ovvio o devo fornire maggiori informazioni?


2
Volevo notare che stavo ricevendo questo errore a causa di errori di sintassi del preprocessore che non avevo notato all'inizio.
BradGreens

Risposte:


73

Sembra che questo sia un errore molto generale, tuttavia nel mio caso il problema era che non ero eseguito karma startdalla cartella corretta o che non l'ho riavviato dopo aver modificato la configurazione.

Lascerò questa domanda aperta e si spera che possa diventare una risorsa per altri che riscontrano questo messaggio di errore.


26
Lo stesso per me: correre ha karma start test/karma.conf.jsfatto il trucco per me. La directory giusta potrebbe essere diversa per te.
Jason

3
Ho ricevuto questo errore durante l'aggiunta dei preprocessori: {'src / ** / *. Js': ['babel']}, qualche idea?
SuperUberDuper

5
Per me la modifica test/**/*.{js,jsx}per test/**/*.+(js|jsx)correggere questo errore. Che bizzarro!
ginepro

1
Inoltre tale errore può apparire se la configurazione del karma ha un errore di battitura
sergolius

28

Se assegni un nome al tuo file di configurazione karma karma.conf.js, puoi semplicemente digitare karma start.

Altrimenti specificare il nome del file karma start karmafile.js

(Ero nella directory giusta, ma non stavo specificando un nome file.)


13

Devi eseguire la tua karma runo qualsiasi altra funzione nella cartella in cui si trova karma-conf.js.


Non mi sembra giusto. Se corro karma startnella srcsottocartella in cui karma.conf.jssi trova ottengo un errore[karma-server]: Server start failed on port 9876: Error: The '@angular-devkit/build-angular/plugins/karma' karma plugin is meant to be used from within Angular CLI and will not work correctly outside of it.
BaltoStar


6

Ho avuto un problema con karma.conf.jsil formato del codice file:

files: [
    // Modules
    ,"client/bower_components/angular/angular.min.js"
    ,"client/bower_components/angular-mocks/angular-mocks.js"
    // App
    ,"client/app/app.module.js"
    // Test
    // ,"test/**/*.spec.js"
],

La virgola in più filesnell'array ha causato questo errore:

You need to include some adapter that implements __karma__.start method!

6

Non stavo eseguendo il comando di avvio del karma dal percorso in cui si trovava il mio karma.conf.js. Sono passato a quella cartella e ho eseguito lo stesso comando. È tutto


4

Stavo affrontando questo problema durante l'esecuzione delle specifiche sulla base di codice Angular.js. Ho dovuto correre npm install karma-jasmine -gper farlo funzionare.


3

Se scrivi "karma start", devi avere un file karma.conf.js nella cartella corrente. o semplicemente "karma start /path/karma.conf.js"

Prova a creare un nuovo karmar.conf.js con "karma init /path/karma.conf.js"


2

Nel mio caso, stavo applicando per errore il preprocessore commonjs ai karma-*moduli e il adapter.jsda karma-chromeed è karma-firefoxstato rotto in questo modo.

Sfortunatamente, questo è un errore molto generico.


Potresti fornire più informazioni di base sulla correzione che hai fatto? Questo potrebbe farmi venire in questo momento perché so che sto usando il karma-cromo. Grazie!
daniel.caspers

Applichi il preprocessore commonjs (è configurato in karma runner)? Se sì, assicurati che non sia applicato ai file nei moduli karma- *.
Adrian Ber

2

Ho ricevuto lo stesso errore perché il progetto utilizzava Babel 6 e mi ero dimenticato di aggiungere il file babelrc. Condivido solo nel caso in cui questo possa aiutare.


2

Nel mio caso, il messaggio era infatti molto descrittivo: ho dimenticato di aggiungere un adattatore, nel mio caso Jasmine, nel file di configurazione. Quindi:

module.exports = function(config) {
  config.set({
      browsers: ['Chrome'],
      singleRun: true,
      frameworks: ['jasmine'],
      files: [
          // ... files ...
      ],
      // other configs
    });
};

2

Devi configurare il tuo file "my.conf.js", perché contiene tutte le informazioni da usare per testare il tuo codice.

Tutto quello che ti serve per scrivere è questo:

Il file di configurazione può essere generato usando karma init:

$ karma init my.conf.js

Quale framework di test desideri utilizzare? Premere tab per elencare le possibili opzioni. Invio per passare alla domanda successiva.

gelsomino

Vuoi usare Require.js? Questo aggiungerà il plug-in Require.js. Premere tab per elencare le possibili opzioni. Invio per passare alla domanda successiva.

no

Vuoi acquisire automaticamente un browser? Premere tab per elencare le possibili opzioni. Immettere una stringa vuota per passare alla domanda successiva.

Cromo

Qual è la posizione dei file di origine e di prova? Puoi usare schemi glob, ad es. "js / *. js" o "test / ** / * Spec.js". Premi Invio per passare alla domanda successiva.

* .js test / ** / *. js

Qualcuno dei file inclusi nei modelli precedenti dovrebbe essere escluso? Puoi usare schemi glob, ad es. "** / *. swp".

Premi Invio per passare alla domanda successiva.

Vuoi che Karma guardi tutti i file ed esegua i test sulle modifiche? Premere tab per elencare le possibili opzioni.

File di configurazione generato in "/Users/vojta/Code/karma/my.conf.js".


1

Devo aggiungere che nel mio caso il karma mi dava l'errore perché avevo parentesi quadre nel nome di una delle cartelle principali.


1

Lo stesso problema è accaduto a me ed era dovuto a un modulo obsoleto.

La corsa lo ha npm updaterisolto.


1

Si lamenta dell'adattatore che probabilmente è jasmine o mocha. O manca l'adattatore, o non è impostato correttamente, o è una versione obsoleta o difettosa dell'adattatore.

Nel mio caso avevo una vecchia versione di mocha 2.5.3 che non era compatibile con karma 1+. Ho aggiornato la dipendenza mocha all'ultima versione disponibile 3.2.0 e il problema è stato risolto.


1

Mentre lavoravo su numerosi errori vagamente descritti, ho provato a impostare basePath: '../', Dopo aver corretto altri errori (come le virgole mancanti che sono state descritte come errori di contenuto dell'oggetto) l'ultima modifica a basePath: '', ha fatto funzionare il karma. le dichiarazioni di errore del karma richiedono molto lavoro. Non è semplice farlo funzionare.


1

Ho avuto lo stesso problema. Il mio browser si apriva ma sul mio terminale ha generato il seguente errore

30 08 2017 11:19:28.272:INFO [Chrome 58.0.3029 (Linux 0.0.0)]: Connected `enter code here`on socket 5sSs6E5KmpUVRp6LAAAB with id 93886631
Chrome 58.0.3029 (Linux 0.0.0) ERRORSome of your tests did a full page reload!

Ho controllato il mio file karma.conf.js. Nell'array del framework, avevo incluso jasmine e requirejs. Ma avevo installato solo karma-jasmine. La rimozione di requireJS e il riesecuzione del karma start hanno funzionato!


1

Dovrai specificare la directory di karma.config.jsquando esegui start karma.

Provare

karma start karma.config.js


1

Ho avuto una cattiva configurazione dei "file" nel mio karma.conf.js

files: ['**/*.js'],

questo ha raggiunto tutti i file in node_modules / inclusi quelli del plug-in karma-jasmine, poiché era visto come file sorgente che non veniva caricato all'avvio. Passaggio a

files: [
        'src/*.js',
        'spec/*.js'
    ],

ha risolto il problema nel mio caso


0

FWIW: la ricerca del percorso del file ha karma.conf.jsfunzionato per me localmente, ma non sul mio generatore di jenkins. Non ho idea del perché questo sia il caso, ma su jenkins stava generando questo errore a meno che il karma.conf.jsfile non fosse nella directory principale in cui è stato dato il comando karma. Sto usando rails e sto eseguendo le specifiche js attraverso un'attività di rake. Il codice è sotto che potrebbe essere utile per alcuni.

https://gist.github.com/daino3/a39486ff8bfc1668e923


0

Il problema nel mio caso era che il karma non raccoglieva alcun file. Risolverlo in karma.conf.js ha risolto il problema.


0

Nel mio caso, non era affatto correlato al karma! Eseguo karma da gulp, con ES6 / babel, e in realtà si è verificato un errore di sintassi del codice, contrassegnato da un errore di babel sopra il mio karma:

ERRORE [preprocessor.babel]: xxx.js: token imprevisto (19:83)

L'ho risolto nel mio src e il karma era di nuovo felice.


0

Ho lottato anche con questo. Quello che ho scoperto è che questo errore si verifica a causa di uno dei seguenti motivi

Il mio problema era che il mio file di configurazione era denominato karma.config.jsinvece dikarma.conf.js .

Se hai installato l' adattatore di prova ma ancora non funziona, prova a eseguire karma inite segui la configurazione guidata.


0

Nel mio caso, il nome del file di configurazione era diverso . Quindi, l'esecuzione del comando che specifica il file conf ha risolto il mio problema.

>> karma start unit-tests.conf.js
No captured browser, open http://localhost:9876/
...

E per "PhantomJS", aprendo il collegamento specificato ( localhost: 9876 ) nel browser esegue i casi di test.

Spero che sia d'aiuto. :)

EDIT 1: My Karma Config File

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      './node_modules/angular/angular.js',
      './node_modules/angular-ui-router/release/angular-ui-router.js',
      './node_modules/angular-mocks/angular-mocks.js',
      './app/services/users/users.js',
      './app/app.js',
      './app/services/users/users.spec.js'
    ],


    // list of files to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['spec'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}

0

Ho ricevuto questo errore perché ho richiesto due volte la stessa dipendenza!

La rimozione della dipendenza da file duplicati ha rimosso l'errore per me. Cerchiato in blu sotto.

inserisci qui la descrizione dell'immagine


0

Devi specificare il file di configurazione del karma in karma.

karma start karma.config.js 

Per me funziona

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.