Pregunta Gradle "... se produjo el proceso de inicio 'comando' npm ''" en Mac


Tengo MacOS con IntelliJ Idea instalada. Estoy usando Gradle (gradle-2.4) para construir el proyecto. Tengo NodeJS y NPM instalados en Mac y disponibles desde el shell.

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

Cuando ejecuta la tarea Gradle que usa NODE / NPM, falla con el siguiente error (en el ejemplo actual es NPM).

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

El seguimiento de la pila de errores de Gradle es el siguiente.

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

Parece que Gradle está tratando de encontrar NPM en el directorio absoluto del proyecto y no usa la variable de entorno Mac PATH. ¿Alguien sabe cómo evitar / solucionar esto? No puedo usar la ruta absoluta para NODE / NPM ya que el equipo se comparte y usa diferentes sistemas operativos (Linux, MacOS). ¿Algunas ideas? :)


19
2017-11-05 14:12


origen


Respuestas:


Detengo al daemon gradle ejecutando

$ ./gradlew --stop

vuelva a ejecutar el comando gradle y corríjalo.


46
2018-05-23 07:13



Tuve un problema similar y, en mi caso, el problema fue que cuando lo ejecuté desde IntelliJ, Gradle no pudo acceder a la ruta para averiguar dónde está node / npm. Estaba usando el complemento gradle-gulp y la descarga automática del nodo resolvió el problema.

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
}

10
2018-06-13 09:44



Puede ser útil para alguien:

En mi caso, el problema era que tenía Android Studio ejecutándose. Tuve que dejarlo primero, luego todo funcionó bien de nuevo.


4
2017-11-17 13:30



Tuve el mismo problema y lo resolvió al ejecutar

gradle --stop


2
2018-02-02 19:40



Me encontré con este mismo problema al intentar ejecutar tareas de Gradle que ejecutaban comandos como nodo y npm desde el complemento de Gradle en Intellij. Puede ver en el seguimiento de pila que el complemento Gradle está intentando ejecutar comandos externos del sistema y está recibiendo errores como este:

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)

Puede reproducir este error desde la línea de comandos si elimina los ejecutables (es decir, node, npm) de la ruta, lo que me indica que algo sobre el complemento no respeta la ruta del entorno.

Mi complemento Gradle está utilizando los proyectos gradlew (gradlewiner versión 2.3), así que intenté apuntar el complemento a una instalación más reciente de Gradle en mi sistema (versión 2.10) y funcionó.

Luego resolví mi problema al regenerar el envoltorio Gradle para mi proyecto y luego configurar el plugin IntelliJ Gradle para que señalara mi envoltorio.

No tengo idea de cuál fue el problema original.


0
2017-12-23 00:14



La respuesta es que esto es trivial. La solución es aplicable a CUALQUIER aplicación.

El motivo del error es que ninguna de las aplicaciones visuales de Mac OS X usa un shell de usuario, por lo que lo que tenga en su configuración de perfil local, como ~ / .bash_profile, simplemente no se aplica cuando se inicia Studio. Hay una buena solución:

  1. desde la terminal, vaya a este directorio o donde su aplicación Studio (o cualquier otra aplicación) esté instalado:

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

  2. Mueva el ejecutable del estudio a studio_app (o lo que sea que sea su nombre ejecutable)

    mv $ ejecutable $ $ ejecutable $ _app

  3. Cree un nuevo archivo de texto, llámelo $ ejecutable $ y complételo de esta manera. Aquí estoy usando mi bash_profile.

    ! / bin / sh

    . ~ / .bash_profile

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

    ejecutivo "dirname \"$0\"/ $ ejecutable $ _app "$ @

  4. Cierre el archivo de estudio. Desde permisos de cambio de shell:

    chmod + x $ ejecutable $

Y eso es todo. Reinicie la aplicación Studio normalmente y ahora ha heredado todas sus configuraciones de bash_profile, incluida la ruta al nodo, etc.

Sustituye $ executable $ con el nombre de tu archivo exe. Para Android Studio sería solo estudio. Para IntelliJ debería ser solo intellij (verificación doble).


0
2017-10-12 09:12



Podría ser útil:

ruta de usuario de sudo launchctl config $ PATH

"Para que tenga efecto podría tener que reiniciar su máquina"


0
2017-12-02 09:00