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? :)
J'arrête le démon Gradle en exécutant
$ ./gradlew --stop
réexécutez la commande gradle et corrigez-la.
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
}
Pourrait être utile pour quelqu'un:
Dans mon cas, le problème était que j'avais Android Studio en cours d'exécution ..___.
J'ai eu le même problème et je l'ai résolu en exécutant
grade - arrêt
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.
Pourrait être utile:
Chemin utilisateur Sudo launchctl config $ PATH
"Pour prendre effet, vous devrez peut-être redémarrer votre ordinateur"
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:
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
Déplacez l'exécutable de studio vers studio_app (ou quel que soit votre nom d'exécutable)
mv $ executable $ $ executable $ _app
Créez un nouveau fichier texte, appelez-le $ executable $ et remplissez-le comme ceci. Ici, j'utilise mon bash_profile.
. ~/.bash_profile
logger "dirname \"$0\"
/$ executable $ _app"
exec "dirname \"$0\"
/$ executable $ _app" $ @
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).