web-dev-qa-db-ja.com

Gradle "... Macでプロセス 'command' npm ''を開始中に発生しました

IntelliJ IdeaがインストールされたMacOSがあります。プロジェクトをビルドするためにGradle(gradle-2.4)を使用しています。 NodeJSとNPMをMacにインストールし、シェルから入手できます。

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

NODE/NPMを使用するGradleタスクを実行すると、次のエラーで失敗します(現在の例ではNPMです)。

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

Gradleからのエラースタックトレースは次のとおりです。

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

だから、Gradleはプロジェクトの絶対ディレクトリでNPMを見つけようとしており、Mac PATH環境変数を使用していないようです。誰もこれを回避/回避する方法を知っていますか?チームが共有され、異なるOS(Linux、MacOS)を使用しているため、NODE/NPMに絶対パスを使用できません。何か案は? :)

27
Andrei Petrik

実行してgradleデーモンを停止します

$ ./gradlew --stop

gradleコマンドを再実行して修正します。

57
clinyong

私は同様の問題を抱えていましたが、私の場合、IntelliJから実行したとき、Gradleはパスにアクセスしてノード/ npmがどこにあるかを見つけることができませんでした。私はgradle-gulp-pluginを使用しており、ノードの自動ダウンロードを有効にして問題を解決しました。

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

誰かに役立つかもしれません:

私の場合、問題は、Android Studioを実行していたことです。最初にそれを終了しなければならなかったので、すべて正常に動作しました。

5
Vic Torious

私は同じ問題を抱えていて、コマンドを実行して解決しました:

gradle --stop
3
prag

IntellijのGradleプラグインからnodeやnpmなどのコマンドを実行するGradleタスクを実行しようとすると、この同じ問題に遭遇しました。スタックトレースから、Gradleプラグインが外部システムコマンドを実行しようとしており、次のようなエラーが発生していることがわかります。

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)

パスから実行可能ファイル(つまり、ノード、npm)を削除すると、コマンドラインからこのエラーを再現できます。これにより、プラグインに関する何かが環境パスを尊重していないことがわかります。

私のGradleプラグインはプロジェクトgradlew(gradle wrapper version 2.3)を使用しているので、プラグインが私のシステム(バージョン2.10)に最近インストールされたGradleを指すようにしました。

次に、プロジェクトのgradleラッパーを再生成し、ラッパーを指すようにIntelliJ Gradleプラグインを設定して、問題を解決しました。

元の問題が何だったのかわかりません。

0
Jason White

役に立つかもしれません:

Sudo launchctl config user path $ PATH

「有効にするには、マシンを再起動する必要があります」

0
RomanKn

答えは、これは取るに足らないことです。ソリューションは、すべてのアプリケーションに適用されます。

エラーの理由は、Mac OS Xのビジュアルアプリはいずれもユーザーシェルを使用しないため、~/.bash_profileなどのローカルプロファイル設定にあるものはすべて、Studioの起動時に取得されないためです。良い回避策があります:

  1. ターミナルから、このディレクトリに移動するか、Studioアプリ(またはその他のアプリ)がインストールされている場所に移動します。
cd /Applications/Android Studio.app/Contents/MacOS
  1. スタジオの実行可能ファイルをstudio_app(または実行可能ファイル名)に移動します
mv $executable$ $executable$_app
  1. 新しいテキストファイルを作成し、$executable$と呼び、次のように入力します。ここでは、bash_profileを使用しています。
#!/bin/sh    
. ~/.bash_profile
logger "`dirname \"$0\"`/$executable$_app"
exec "`dirname \"$0\"`/$executable$_app" $@
  1. スタジオファイルを閉じます。シェルの変更許可から:
chmod +x $executable$

それだけです。 Studioアプリを通常どおり再起動すると、ノードへのパスなど、bash_profileからすべての設定が継承されます。

$executable$をexeファイルの名前に置き換えます。 Android Studioの場合は、単なるスタジオになります。IntelliJの場合は、単にintellijになります(ダブルチェック)。

0
Moonwalker