Perché Grugnito fail?

Ricevo un errore strano dopo l’esecuzione di npm run-script grunt in cui tell me che node_modules/.bin/grunt non riesce.

Sto seguendo un tutorial di come im abbastanza nuovo di Dorsale (http://dailyjs.com/2012/11/29/backbone-tutorial-1/),

Ecco il mio package.json file.

{
  "name": "btask"
, "version": "0.0.1"
, "private": true
, "dependencies": {
    "requirejs": "latest"
  , "connect": "2.7.0"
  }
, "devDependencies": {
    "mocha": "latest"
  , "chai": "latest"
  , "grunt": "latest"
  , "grunt-exec": "latest"
  }
, "scripts": {
    "grunt": "node_modules/.bin/grunt"
  }
}

E qui la trascrizione integrale dell’errore.

0 info it worked if it ends with ok
1 verbose cli [ 'node',
1 verbose cli   '/Users/Keva161/.nvm/v0.8.18/bin/npm',
1 verbose cli   'run-script',
1 verbose cli   'grunt' ]
2 info using [email protected].2.4
3 info using [email protected].8.18
4 verbose read json /Users/Keva161/Documents/Web Dev/Webapps/Node/btask/package.json
5 verbose run-script [ 'pregrunt', 'grunt', 'postgrunt' ]
6 info pregrunt [email protected].0.1
7 info grunt [email protected].0.1
8 verbose unsafe-perm in lifecycle true
9 silly exec sh "-c" "node_modules/.bin/grunt"
10 silly sh,-c,node_modules/.bin/grunt,/Users/Keva161/Documents/Web Dev/Webapps/Node/btask spawning
11 info [email protected].0.1 Failed to exec grunt script
12 error [email protected].0.1 grunt: `node_modules/.bin/grunt`
12 error `sh "-c" "node_modules/.bin/grunt"` failed with 2
13 error Failed at the [email protected].0.1 grunt script.
13 error This is most likely a problem with the btask package,
13 error not with npm itself.
13 error Tell the author that this fails on your system:
13 error     node_modules/.bin/grunt
13 error You can get their info via:
13 error     npm owner ls btask
13 error There is likely additional logging output above.
14 error System Darwin 12.2.1
15 error command "node" "/Users/Keva161/.nvm/v0.8.18/bin/npm" "run-script" "grunt"
16 error cwd /Users/Keva161/Documents/Web Dev/Webapps/Node/btask
17 error node -v v0.8.18
18 error npm -v 1.2.4
19 error code ELIFECYCLE
20 verbose exit [ 1, true ]
  • Sei su Windows? Ho avuto problemi di esecuzione di grugnito su Windows con quella configurazione…
  • no im su osx :/ ho provato installato grugnito a livello globale, ma stesso errore
  • Io non credo che sia il tuo caso, ma ho dovuto cambiare il “script” sezione di pacchetto.json per funzionare su Windows: "grunt": "node_modules\\.bin\\grunt"
InformationsquelleAutor Keva161 | 2013-02-04



3 Replies
  1. 22

    Il tutorial che stai parlando di usi grugnito 0.3.
    Grunt ha aggiornato da allora e se si utilizza “grugnito”: “ultimi” nella tua pacchetto.json file allora si otterrà grugnito 0.4 per impostazione predefinita.

    Si può passare attraverso il guida alla migrazione per ottenere le cose di lavoro.

    Al fine di ottenere solo grugnito di lavoro per il tutorial si può fare questo –

    • Installare grugnito-cli a livello globale npm install -g grunt-cli
    • Installare grugnito-init a livello globale npm install -g grunt-init
    • Installare grugnito locale (già installate se hai seguito il tutorial)
    • Cambiare "grunt": "node_modules\\.bin\\grunt" in pacchetto.json per "grunt": "grunt"
    • Rinominare grunt.js nella directory radice Gruntfile.js
    • Cambiare grunt.registerTask('default', 'exec copy-require'); in Gruntfile.js per grunt.registerTask('default', ['exec','copy-require']);
    • Eseguire npm run-script grunt come di consueto nella riga di comando. Le cose dovrebbero funzionare bene ora.

    Si otterrà una directory di compilazione con r.js costruire.

    Se ancora non è possibile farlo funzionare in qualche modo con la procedura di cui sopra, è possibile modificare grunt: "latest" per grunt : "0.3" nel pacchetto.json file ed eseguire npm install in guscio.

    • Che cosa è grunt-init e perché è necessaria?
    • Grugnito init è un’impalcatura, strumento automatico per generare il vostro gruntfile e di altri di una struttura di progetto. (come yeoman). Non è affatto necessario. Più su di esso qui gruntjs.com/project-scaffolding
    • dove è globale grugnito di root?
    • dipende da dove globali npm dipendenze sono installati. Si può fare which grunt in bash per scoprire
  2. 5

    arunkjn‘s risposta per risolvere il problema. Anche se secondo il tutorial è intenzione, l’autore non si desidera installare grugnito a livello globale, che è anche quello che io sto per. Grazie per arunkjn, ho pensato che si potrebbe anche:

    • Installare grugnito-cli localmente da npm install grunt-cli
    • Rinominare grunt.js nella directory radice Gruntfile.js
    • Cambiare grunt.registerTask('default', 'exec copy-require'); in Gruntfile.js per grunt.registerTask('default', ['exec','copy-require']);

    E fare npm run-script grunt di nuovo e dovrebbe funzionare.

    • Grugnito-cli e grugnito-init sono destinati ad essere installati in tutto il mondo.Vedere il punto 2 qui per i dettagli. Nella mia risposta precedente, ho esplicitamente detto che devi installare grugnito localmente per farlo funzionare (e che è ciò che l’autore intende fare).
    • Sì, so che sono supposti per essere a livello globale. Ma il tutorial l’autore voleva tutto locale, ma il suo stile ho supposto. Solo una preferenza.
    • In generale, sono d’accordo con l’autore, come mi piace l’uso di strumenti in locale a meno che non lo so io lo uso regolarmente. Penso che il locale di installazione mantiene con lo spirito del tutorial – installazione a livello globale poi localmente tipo di sconfitte lo scopo. +1 per che e una semplice risposta.
    • Sembra di si anche bisogno di modificare gli script di sezione da "scripts": { "grunt": "node_modules/.bin/grunt" } per "scripts": { "grunt": "node_modules/grunt-cli/bin" }
  3. 2

    Sto usando grugnito e npm per un po ‘ ora, e non ho mai usato run_script. Forse provare questo?

    Il scripts porzione è di solito per l’esecuzione su un server remoto, (ie Heroku o Travis)


    Rimuovere il scripts blocco.

    Quindi fare

    npm install -g grunt

    Necessario riavviare il terminale dopo questo.

    cd myproject
    npm install
    grunt mytask

Lascia un commento