[GH-ISSUE #1785] installing cubiq/ComfyUI_essentials via manager results in missing nodes. as opposed to "git clone" #770

Open
opened 2026-10-27 21:21:58 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @tazztone on GitHub (May 1, 2025).
Original GitHub issue: https://github.com/Comfy-Org/ComfyUI-Manager/issues/1785

i kept getting errors of some missing "essentials" nodes in workflows, despite having updated to latest. only after another user found this out i got it working:

I've found that if you clone manually https://github.com/cubiq/ComfyUI_essentials, it would have the SimpleMathSlider node in it, the version installed by node manager for some reason does not have it. (Check misc.py, it should have "class SimpleMathSlider" in it)

i deleted the custom nodes folder ComfyUI_essentials and manually git cloned. and voila no more missing nodes
why would installing via manager not be the same as git cloning repo?

Originally created by @tazztone on GitHub (May 1, 2025). Original GitHub issue: https://github.com/Comfy-Org/ComfyUI-Manager/issues/1785 i kept getting errors of some missing "essentials" nodes in workflows, despite having updated to latest. only after another user found this out i got it working: > I've found that if you clone manually https://github.com/cubiq/ComfyUI_essentials, it would have the SimpleMathSlider node in it, the version installed by node manager for some reason does not have it. (Check [misc.py](http://misc.py/), it should have "class SimpleMathSlider" in it) i deleted the custom nodes folder ComfyUI_essentials and manually git cloned. and voila no more missing nodes why would installing via manager not be the same as git cloning repo?
Author
Owner

@masayay commented on GitHub (May 2, 2025):

This is related to the following issue.

https://github.com/Comfy-Org/ComfyUI-Manager/issues/1411

The problem is due to setting install_path with node_id. Using repo_name instead should fix it.

This patch is expected to resolve the issue, I haven't done much testing.

diff --git a/glob/manager_core.py b/glob/manager_core.py
index 35e4828..a85a68e 100644
--- a/glob/manager_core.py
+++ b/glob/manager_core.py
@@ -1221,7 +1221,7 @@ class UnifiedManager:
 
         return result
 
-    def cnr_install(self, node_id: str, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False):
+    def cnr_install(self, node_id: str, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False, repo_name=None):
         result = ManagedResult('install-cnr')
 
         if 'comfyui-manager' in node_id.lower():
@@ -1238,8 +1238,11 @@ class UnifiedManager:
         if os.path.exists(download_path):
             os.remove(download_path)
 
-        # install_path
-        install_path = os.path.join(get_default_custom_nodes_path(), node_id)
+        if repo_name:
+            install_path = os.path.join(get_default_custom_nodes_path(), repo_name)
+        else:
+            install_path = os.path.join(get_default_custom_nodes_path(), node_id)
+
         if os.path.exists(install_path):
             return result.fail(f'Install path already exists: {install_path}')
 
@@ -1418,21 +1421,21 @@ class UnifiedManager:
             else:
                 version_spec = self.resolve_unspecified_version(node_id)
 
-        if version_spec == 'unknown' or version_spec == 'nightly':
-            try:
-                custom_nodes = await self.get_custom_nodes(channel, mode)
-            except InvalidChannel as e:
-                return ManagedResult('fail').fail(f'Invalid channel is used: {e.channel}')
-
-            the_node = custom_nodes.get(node_id)
-            if the_node is not None:
-                if version_spec == 'unknown':
-                    repo_url = the_node['files'][0]
-                else:  # nightly
-                    repo_url = the_node['repository']
-            else:
-                result = ManagedResult('install')
-                return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]")
+        try:
+            custom_nodes = await self.get_custom_nodes(channel, mode)
+        except InvalidChannel as e:
+            return ManagedResult('fail').fail(f'Invalid channel is used: {e.channel}')
+
+        the_node = custom_nodes.get(node_id)
+        if the_node is not None:
+            if version_spec == 'unknown':
+                repo_url = the_node['files'][0]
+            else:  # nightly
+                repo_url = the_node['repository']
+        else:
+            result = ManagedResult('install')
+            return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]")
+        repo_name = os.path.splitext(os.path.basename(repo_url))[0]
 
         if self.is_enabled(node_id, version_spec):
             return ManagedResult('skip').with_target(f"{node_id}@{version_spec}")
@@ -1446,7 +1449,7 @@ class UnifiedManager:
                 if self.is_enabled(node_id, 'cnr'):
                     self.unified_disable(node_id, False)
 
-            to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), node_id))
+            to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), repo_name))
             res = self.repo_install(repo_url, to_path, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall)
             if res.result:
                 if version_spec == 'unknown':
@@ -1475,7 +1478,7 @@ class UnifiedManager:
         if self.is_enabled(node_id, "cnr"):
             return self.cnr_switch_version(node_id, version_spec, no_deps=no_deps, return_postinstall=return_postinstall)
 
-        res = self.cnr_install(node_id, version_spec, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall)
+        res = self.cnr_install(node_id, version_spec, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall, repo_name=repo_name)
         if res.result:
             self.active_nodes[node_id] = version_spec, res.to_path
<!-- gh-comment-id:2846571016 --> @masayay commented on GitHub (May 2, 2025): This is related to the following issue. https://github.com/Comfy-Org/ComfyUI-Manager/issues/1411 The problem is due to setting install_path with `node_id`. Using `repo_name` instead should fix it. This patch is expected to resolve the issue, I haven't done much testing. ```diff diff --git a/glob/manager_core.py b/glob/manager_core.py index 35e4828..a85a68e 100644 --- a/glob/manager_core.py +++ b/glob/manager_core.py @@ -1221,7 +1221,7 @@ class UnifiedManager: return result - def cnr_install(self, node_id: str, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False): + def cnr_install(self, node_id: str, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False, repo_name=None): result = ManagedResult('install-cnr') if 'comfyui-manager' in node_id.lower(): @@ -1238,8 +1238,11 @@ class UnifiedManager: if os.path.exists(download_path): os.remove(download_path) - # install_path - install_path = os.path.join(get_default_custom_nodes_path(), node_id) + if repo_name: + install_path = os.path.join(get_default_custom_nodes_path(), repo_name) + else: + install_path = os.path.join(get_default_custom_nodes_path(), node_id) + if os.path.exists(install_path): return result.fail(f'Install path already exists: {install_path}') @@ -1418,21 +1421,21 @@ class UnifiedManager: else: version_spec = self.resolve_unspecified_version(node_id) - if version_spec == 'unknown' or version_spec == 'nightly': - try: - custom_nodes = await self.get_custom_nodes(channel, mode) - except InvalidChannel as e: - return ManagedResult('fail').fail(f'Invalid channel is used: {e.channel}') - - the_node = custom_nodes.get(node_id) - if the_node is not None: - if version_spec == 'unknown': - repo_url = the_node['files'][0] - else: # nightly - repo_url = the_node['repository'] - else: - result = ManagedResult('install') - return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]") + try: + custom_nodes = await self.get_custom_nodes(channel, mode) + except InvalidChannel as e: + return ManagedResult('fail').fail(f'Invalid channel is used: {e.channel}') + + the_node = custom_nodes.get(node_id) + if the_node is not None: + if version_spec == 'unknown': + repo_url = the_node['files'][0] + else: # nightly + repo_url = the_node['repository'] + else: + result = ManagedResult('install') + return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]") + repo_name = os.path.splitext(os.path.basename(repo_url))[0] if self.is_enabled(node_id, version_spec): return ManagedResult('skip').with_target(f"{node_id}@{version_spec}") @@ -1446,7 +1449,7 @@ class UnifiedManager: if self.is_enabled(node_id, 'cnr'): self.unified_disable(node_id, False) - to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), node_id)) + to_path = os.path.abspath(os.path.join(get_default_custom_nodes_path(), repo_name)) res = self.repo_install(repo_url, to_path, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall) if res.result: if version_spec == 'unknown': @@ -1475,7 +1478,7 @@ class UnifiedManager: if self.is_enabled(node_id, "cnr"): return self.cnr_switch_version(node_id, version_spec, no_deps=no_deps, return_postinstall=return_postinstall) - res = self.cnr_install(node_id, version_spec, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall) + res = self.cnr_install(node_id, version_spec, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall, repo_name=repo_name) if res.result: self.active_nodes[node_id] = version_spec, res.to_path ```
Author
Owner

@PrometheusDante commented on GitHub (May 21, 2025):

Hey there, I wanted to forward another case reported to me just yesterday, where a user had the same issue affecting the ComfyUI_IPAdapter_plus pack, also by Matteo.

A manual installation via git clone was also necessary to solve that issue and have all nodes load properly.

<!-- gh-comment-id:2897605307 --> @PrometheusDante commented on GitHub (May 21, 2025): Hey there, I wanted to forward another case reported to me just yesterday, where a user had the same issue affecting the [ComfyUI_IPAdapter_plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) pack, also by Matteo. A manual installation via git clone was also necessary to solve that issue and have all nodes load properly.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/ComfyUI-Manager#770
No description provided.