From 2d8159998d03da2ac96fee1e2469cf4ecf9a6e52 Mon Sep 17 00:00:00 2001 From: Julia Date: Fri, 21 Jul 2023 16:13:00 -0400 Subject: [PATCH] Put our downloaded copy of Node in the env for every NPM action Intelephense (PHP language server) has a dependency on `protobufjs` which invokes `node` in the `postinstall` script and if the user did not have a system Node runtime installed that would fail. Have this use our downloaded installation too --- crates/node_runtime/src/node_runtime.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/node_runtime/src/node_runtime.rs b/crates/node_runtime/src/node_runtime.rs index de9cf501ac..94858df880 100644 --- a/crates/node_runtime/src/node_runtime.rs +++ b/crates/node_runtime/src/node_runtime.rs @@ -62,6 +62,14 @@ impl NodeRuntime { args: &[&str], ) -> Result { let attempt = |installation_path: PathBuf| async move { + let mut env_path = installation_path.join("bin").into_os_string(); + if let Some(existing_path) = std::env::var_os("PATH") { + if !existing_path.is_empty() { + env_path.push(":"); + env_path.push(&existing_path); + } + } + let node_binary = installation_path.join("bin/node"); let npm_file = installation_path.join("bin/npm"); @@ -74,6 +82,7 @@ impl NodeRuntime { } let mut command = Command::new(node_binary); + command.env("PATH", env_path); command.arg(npm_file).arg(subcommand).args(args); if let Some(directory) = directory {