web-dev-qa-db-fra.com

Gradle "... s'est produite au démarrage du processus 'commande' npm ''" sur Mac

J'ai MacOS avec IntelliJ Idea installé. J'utilise Gradle (Gradle-2.4) pour la construction du projet. NodeJS et NPM sont installés sur le Mac et disponibles à partir du shell.

MacBook:~ user$ node -v
v4.2.2
MacBook:~ user$ npm -v
2.14.7

Lors de l'exécution d'une tâche Gradle utilisant NODE/NPM, elle échoue avec l'erreur suivante (dans l'exemple actuel, il s'agit de NPM).

* What went wrong:
Execution failed for task ':module:task'.
> A problem occurred starting process 'command 'npm''

La trace d'erreur de la pile de Gradle est la suivante.

Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':module:task'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.Java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:42)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.Java:305)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.Java:79)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.Java:63)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.Java:51)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.Java:23)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.Java:88)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.Java:29)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:62)
    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.Java:23)
    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.Java:68)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.Java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:62)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:55)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.Java:149)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.Java:106)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.Java:86)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.Java:80)
    at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.Java:43)
    at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.Java:30)
    at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.Java:119)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:36)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:26)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.Java:47)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.Java:35)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.Java:24)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.Java:33)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:71)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:69)
    at org.gradle.util.Swapper.swap(Swapper.Java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.Java:69)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.Java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.Java:70)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.Java:39)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.Java:46)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.Java:246)
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.Java:64)
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'npm''
    at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.Java:196)
    at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.Java:325)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.Java:83)
    ... 1 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'npm'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.Java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.Java:36)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.Java:65)
    ... 1 more
Caused by: Java.io.IOException: Cannot run program "npm" (in directory "/<project path>"): error=2, No such file or directory
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.Java:25)
    ... 3 more
Caused by: Java.io.IOException: error=2, No such file or directory
    ... 4 more

Il semble donc que Gradle essaie de trouver NPM dans le répertoire absolu du projet et n’utilise pas la variable d’environnement Mac PATH. Quelqu'un sait comment éviter/contourner ce problème? Je ne peux pas utiliser le chemin absolu pour NODE/NPM car l'équipe est partagée et utilise différents systèmes d'exploitation (Linux, MacOS). Des idées? :)

22
Andrei Petrik

J'arrête le démon Gradle en exécutant

$ ./gradlew --stop

réexécutez la commande gradle et corrigez-la.

49
clinyong

J'ai eu un problème similaire et dans mon cas, le problème était que lorsque je l'ai exécuté à partir d'IntelliJ, Gradle était incapable d'accéder au chemin d'accès pour savoir où se trouvait le nœud/npm. J'utilisais le plugin gradle-gulp et l'activation du téléchargement automatique du nœud a résolu le problème.

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath('be.filipblondeel.gradle:gradle-gulp-plugin:0.1')
    }
}
node {
    // Version of node to use.
    version = '0.12.0'

    // Enabled the automatic download.
    download = true
}
11
Yohan Liyanage

Pourrait être utile pour quelqu'un: 

Dans mon cas, le problème était que j'avais Android Studio en cours d'exécution ..___.

4
Vic Torious

J'ai eu le même problème et je l'ai résolu en exécutant 

grade - arrêt

2
prag

J'ai rencontré ce même problème en essayant d'exécuter des tâches Gradle exécutant des commandes telles que node et npm à partir du plug-in Gradle dans Intellij. Vous pouvez voir sur la trace de la pile que le plug-in Gradle tente d'exécuter des commandes système externes et qu'il génère des erreurs telles que celles-ci:

WARN - nal.AbstractExternalSystemTask - error=2, No such file or directory 
com.intellij.openapi.externalSystem.model.ExternalSystemException: error=2, No such file or directory
at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.Java:228)

Vous pouvez reproduire cette erreur à partir de la ligne de commande si vous supprimez les exécutables (c.-à-d. Nœud, npm) du chemin, ce qui m'indique que quelque chose à propos du plug-in ne respecte pas le chemin de l'environnement.

Mon plug-in Gradle utilise les projets gradlew (Gradle wrapper version 2.3). J'ai donc essayé de pointer le plug-in vers une installation Gradle plus récente sur mon système (version 2.10) et cela a fonctionné.

J'ai ensuite résolu mon problème en régénérant le wrapper Gradle pour mon projet, puis en configurant le plug-in IntelliJ Gradle pour qu'il pointe vers mon wrapper.

Je n'ai aucune idée du problème initial.

0
Jason White

Pourrait être utile:

Chemin utilisateur Sudo launchctl config $ PATH

"Pour prendre effet, vous devrez peut-être redémarrer votre ordinateur"

0
RomanKn

La réponse est que c'est trivial, il s'avère. La solution est applicable à N'IMPORTE QUELLE application.

Cette erreur s’explique par le fait qu’aucune des applications visuelles de Mac OS X n’utilise un shell utilisateur. Par conséquent, les paramètres de votre profil local tels que ~/.bash_profile ne sont pas pris en compte lors du lancement de Studio. Il y a une bonne solution de contournement:

  1. depuis le terminal, accédez à ce répertoire ou à l'endroit où votre application Studio (ou toute autre application) est installée

    cd/Applications/Android Studio.app/Contents/MacOS

  2. Déplacez l'exécutable de studio vers studio_app (ou quel que soit votre nom d'exécutable)

    mv $ executable $ $ executable $ _app

  3. Créez un nouveau fichier texte, appelez-le $ executable $ et remplissez-le comme ceci. Ici, j'utilise mon bash_profile.

    !/bin/sh

    . ~/.bash_profile

    logger "dirname \"$0\"/$ executable $ _app"

    exec "dirname \"$0\"/$ executable $ _app" $ @

  4. Fermez le fichier studio. Depuis les autorisations de modification du shell:

    chmod + x $ exécutable $

Et c'est ça. Relancez l'application Studio normalement et maintenant elle a hérité de tous vos paramètres de bash_profile, y compris le chemin d'accès au nœud, etc.

Remplacez $ executable $ par le nom de votre fichier exe. Pour Android Studio, ce ne serait que studio. Pour IntelliJ, cela devrait être simplement intellij (double vérification).

0
Moonwalker