From fc1ad39fa29ef99720ac898cb7623edde82eb14d Mon Sep 17 00:00:00 2001 From: Jason Jean Date: Wed, 24 Jul 2024 15:31:19 -0500 Subject: [PATCH] =?UTF-8?q?fix(core):=20improve=20error=20for=20setting=20?= =?UTF-8?q?an=20internal=20node=20as=20an=20external=20=E2=80=A6=20(#27102?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …dependency ## Current Behavior A unhelpful error is thrown when someone specifies a local project as an external dependency input. ## Expected Behavior A helpful error is thrown when someone specifies a local projecft as an external dependency input. ## Related Issue(s) Fixes https://github.com/nrwl/nx/issues/27088 --- packages/nx/src/native/tasks/hash_planner.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/nx/src/native/tasks/hash_planner.rs b/packages/nx/src/native/tasks/hash_planner.rs index 66e553be2b..8a458a4b2c 100644 --- a/packages/nx/src/native/tasks/hash_planner.rs +++ b/packages/nx/src/native/tasks/hash_planner.rs @@ -167,7 +167,16 @@ impl HashPlanner { let external_node_name = find_external_dependency_node_name(dep, &self.project_graph); let Some(external_node_name) = external_node_name else { - anyhow::bail!("The externalDependency '{dep}' for '{project_name}:{target_name}' could not be found") + if self.project_graph.nodes.contains_key(dep) { + let deps = self.project_graph.dependencies.get(project_name); + if deps.is_some_and(|deps| deps.contains(dep)) { + anyhow::bail!("The externalDependency '{dep}' for '{project_name}:{target_name}' is not an external node and is already a dependency. Please remove it from the externalDependency inputs.") + } else { + anyhow::bail!("The externalDependency '{dep}' for '{project_name}:{target_name}' is not an external node. If you believe this is a dependency, add an implicitDependency to '{project_name}'") + } + } else { + anyhow::bail!("The externalDependency '{dep}' for '{project_name}:{target_name}' could not be found") + } }; trace!( "Add External Instruction for External Input {external_node_name}: {}",