我一直在使用Node作为CLI工具开发一个稍后要发布的开源项目。 CLI本身工作得很好我只需要在另一个项目上测试它是否有效,所以为此我全局安装项目npm install -g
没有错误,但是对于我来说,我不能使用CLI。
我收到以下错误:
奇怪的是,目录和文件确实存在于全局npm文件夹中:
这是项目的package.json
:
我不明白如何使npm / node CLI工作?我错过了什么?
编辑1:
这是我的index.js文件:
编辑2:
在创建一个测试项目后,@ AnghC建议我可以成功使用测试cli,同时检查差异,我发现了这个。在C:\Users\Ivan\AppData\Roaming\npm
内,两个项目的.cmd完全不同:
编辑3(解决方案):
在摆弄后,我发现真正需要shebang(#!/usr/bin/env node
)的文件只是index.js
文件,而不是commander.js
文件。删除该文件中的shebang解决了问题
答案 0 :(得分:1)
您可能希望尝试将link
本地程序包添加到全局可执行文件列表中。
https://docs.npmjs.com/cli/link
您只需在获得工具的文件夹中运行npm link
即可在全局范围内使用该命令。
答案 1 :(得分:0)
尝试卸载cli
运行npm rm -g cli
或sudo npm rm -g cli
。然后运行:npm install cli -g
如果问题仍然存在,您可能希望全局删除npm包,可能会出现一些冲突的事情。
输入:%appdata%
(在资源管理器,运行提示或开始菜单中)。
您可以通过删除以下内容删除所有全局安装的npm包:
C:\Users\username\AppData\Roaming\npm
然后,您可能还想清除所有缓存运行npm cache clear
或npm cache clear --force
,视情况而定。
然后重新安装全局安装的所有软件包。
如果问题仍然存在,请检查:
当您运行npm root -g
时,它会产生C:\Users\<username>\AppData\Roaming\npm\node_modules
,或者甚至,您应该检查您的路径,也许可执行二进制文件和.cmd
文件最终会在C:\Users\<username>\AppData\Roaming\npm
而不是C:\Users\<username>\AppData\Roaming\npm\node_modules
{1}},您需要将该路径添加到PATH环境中。变量
我希望这可以解决您的问题。