2016-02-17 14 views
5

Ho un file package.json che assomiglia:nodo Force per usare git bash su Windows

{ 
    "name": "APP", 
    "version": "3.0.0", 
    "private": true, 
    "scripts": { 
    "start": "node app.js", 
    "test": "./test/dbLoad && env db=test test=1 jasmine" 
    } 
} 

Quando eseguo test di NPM, ottengo un errore:

'.' is not recognized as an internal or external command 

Sono indovinando questo è perché il nodo sta usando Windows cmd.exe. Il comando funziona bene se lo prefaggo con bash. Posso cambiare un'impostazione di configurazione di qualche tipo nel nodo in modo che usi automaticamente bash?

risposta

5

Sì, è possibile!

Prima di eseguire npm run si dovrebbe fare:

set comspec=your_bash.exe_folder 

Il pacchetto NPM, controllare l'ambiente COMSPEC, ed eseguirlo su win32. Per impostazione predefinita ComSpec=C:\windows\system32\cmd.exe

Per maggiori informazioni si può vedere il codice sorgente di NPM: lifecycle.js (Line 219)

if (process.platform === 'win32') { 
    sh = process.env.comspec || 'cmd' 
    shFlag = '/d /s /c' 
    conf.windowsVerbatimArguments = true 
    } 

È possibile impostare l'ambiente COMSPEC, al vostro bash di default utilizzando il Registro di sistema. Se hai bisogno di aiuto, per favore commenta.

+0

Questo cambierà la shell per il mio intero sistema o solo per quando eseguirò il nodo? –

+2

ha provato a digitare set comspec = 'C: \ Programmi \ Git \ bin \ bash.exe' e non si è bloccato. Ho anche provato ad impostare la variabile ComSpec tramite il pannello di controllo, e l'esecuzione di 'npm test' non riesce ancora con lo stesso errore. –

+0

Ho provato sulla mia macchina e funziona. Hai digitato 'set compspec = ...' senza le virgolette? Hai visto che il comspec è stato aggiornato? (usando 'set com') – Aminadav