it-swarm.com.de

Gradle "... beim Starten des Prozesses 'Befehl' npm ''" auf dem Mac aufgetreten

Ich habe MacOS mit IntelliJ Idea installiert. Ich verwende Gradle (Gradle-2.4) zum Erstellen des Projekts. Ich habe NodeJS und NPM auf dem Mac installiert und steht in der Shell zur Verfügung.

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

Beim Ausführen der Gradle-Task, die NODE/NPM verwendet, schlägt der folgende Fehler fehl (im aktuellen Beispiel handelt es sich um NPM).

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

Die Fehlerstapel-Ablaufverfolgung von Gradle ist wie folgt.

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

Es sieht also so aus, als würde Gradle versuchen, NPM im absoluten Projektverzeichnis zu finden und verwendet die Umgebungsvariable Mac PATH nicht. Weiß jemand, wie man dies vermeiden/umgehen kann? Ich kann keinen absoluten Pfad für NODE/NPM verwenden, da das Team freigegeben ist und verschiedene Betriebssysteme (Linux, MacOS) verwendet. Irgendwelche Ideen? :)

22
Andrei Petrik

Ich stoppe den Gradle-Daemon, indem ich renne

$ ./gradlew --stop

führen Sie den Gradle-Befehl erneut aus und korrigieren Sie ihn.

49
clinyong

Ich hatte ein ähnliches Problem, und in meinem Fall bestand das Problem darin, dass Gradle beim Ausführen von IntelliJ nicht auf den Pfad zugreifen konnte, um herauszufinden, wo Node/npm liegt. Ich verwendete das gradle-gulp-Plugin und das Aktivieren des automatischen Herunterladens des Knotens löste das Problem.

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

Könnte für jemanden nützlich sein: 

In meinem Fall bestand das Problem darin, dass ich Android Studio ausgeführt habe.

4
Vic Torious

Ich hatte das gleiche Problem und habe es durch Laufen gelöst 

gradle - stop

2
prag

Ich hatte das gleiche Problem, als ich versuchte, Gradle-Tasks auszuführen, die Befehle wie node und npm vom Gradle-Plugin in Intellij aus ausführten. An der Stack-Ablaufverfolgung können Sie erkennen, dass das Gradle-Plugin versucht, externe Systembefehle auszuführen, und es werden Fehler wie die folgenden angezeigt:

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)

Sie können diesen Fehler über die Befehlszeile reproduzieren, wenn Sie die ausführbaren Dateien (dh Knoten, npm) aus dem Pfad entfernen. Dies bedeutet, dass etwas über das Plugin den Umgebungspfad nicht berücksichtigt.

Mein Gradle-Plugin verwendet die Projekte gradlew (Gradle-Wrapper-Version 2.3). Ich habe also versucht, das Plugin auf eine neuere Gradle-Installation auf meinem System (Version 2.10) zu zeigen, und es hat funktioniert.

Ich habe dann mein Problem behoben, indem ich den Gradle-Wrapper für mein Projekt neu generierte und dann das IntelliJ-Gradle-Plugin so eingestellt habe, dass es wieder auf meinen Wrapper verweist.

Ich habe keine Ahnung, was das ursprüngliche Problem war.

0
Jason White

Könnte hilfreich sein:

Sudo launchctl config Benutzerpfad $ PATH

"Um wirksam zu werden, muss der Computer möglicherweise neu gestartet werden."

0
RomanKn

Die Antwort ist, dass dies trivial ist. Die Lösung ist auf jede Anwendung anwendbar.

Der Grund für den Fehler ist, dass keine der visuellen Apps unter Mac OS X eine Benutzer-Shell verwendet, sodass das, was Sie in Ihren lokalen Profileinstellungen wie ~/.bash_profile haben, beim Starten von Studio einfach nicht gilt. Es gibt eine gute Lösung:

  1. gehen Sie vom Terminal aus in dieses Verzeichnis oder wo auch immer Ihre Studio-App (oder eine andere App) installiert ist :

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

  2. Verschieben Sie die Studio-Programmdatei nach Studio_app (oder wie auch immer Sie Ihren Namen lauten).

    mv $ ausführbare $ $ ausführbare $ _app

  3. Erstellen Sie eine neue Textdatei, nennen Sie sie $ executable $ und füllen Sie sie wie folgt aus. Hier verwende ich mein bash_profile.

    !/bin/sh

    . ~/.bash_profile

    logger "dirname \"$0\"/$ ausführbare $ _app"

    exec "dirname \"$0\"/$ ausführbare $ _app" $ @

  4. Schließen Sie die Studiodatei. Von Shell Änderungsberechtigungen:

    chmod + x $ ausführbare $

Und das ist alles. Starten Sie die Studio-App normal und jetzt haben Sie alle Ihre Einstellungen von bash_profile übernommen, einschließlich des Pfads zum Knoten usw.

Ersetzen Sie $ executable $ durch den Namen Ihrer Exe-Datei. Für Android Studio wäre das nur Studio. Für IntelliJ sollte es nur intellij sein (doppelter Check).

0
Moonwalker