在npm install -g之后,命令仍未找到?


1

我不知道发生了什么,但我安装的节点包都没有实际注册。

npmnode 工作得很好,但如果我 sudo npm install -g ffmpeg 要么 brew,他们被列入 /usr/local/lib/node_modulesbrew -vffmpeg -v 什么都不做“命令未找到”

非常感谢任何帮助,我对命令行的东西很新。我觉得我对两者之间的区别感到困惑 npmbrew... npm是指向命令行的符号链接,还是仅允许 require("brew") 在节点实例中?

有一次,我确实按照一些说明将“sublime”注册为命令行别名。不要认为这会影响任何事情,但我甚至不知道在哪里看

Answers:


2

如果你跑,有没有显示 npm get prefix ? (举个例子,我会说运行命令后会返回“/ usr / local”)

如果在运行上述命令后返回任何内容,请通过运行检查PATH环境变量的设置 echo $PATH (再次举个例子,我会说“/ usr / bin:/ bin:/ usr / sbin:/ sbin”在运行此命令后返回)

如果返回前缀 npm get prefix 显示在你的PATH中 - 由于“/ usr / local /”不在PATH中,因此上面的例子也是如此 - 然后你必须设置你的PATH变量。要设置你的路径:

如果您的shell是Bash,请运行: export PATH="[prefix]/bin:$PATH" >> ~/.bash_profile 哪里 [prefix] 是返回值 npm get prefix

因此,再次使用“/ usr / local”作为示例,将“[prefix]”替换为“/ usr / local”,如下所示
export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile
然后做
source ~/.bash_profile

(你说你对命令行很新,所以如果这没有多大意义,请发表评论,我会尽力提供进一步的澄清)


.bashrc .profile.bash_profile 也将是竞争者。不幸的是我通过使用自制软件而不是npm来解决问题
neaumusic

0

问题是 npm 仅安装节点模块,这些模块必须在Node.js运行时中需要或作为参数执行 node

家酿 brew 和高级包工具(Linux) apt-get 是系统级的包管理器,与Node.js无关,它们倾向于将可执行的shell脚本放在适当的位置,shell在那里寻找候选者,类似于JavaScript原型链( echo $PATH 通常会显示 /usr/local/bin 要么 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin


您可以通过执行来启动节点REPL node 在命令行上(您可以随后编写JavaScript以请求包)。另一种方法是编写一个利用该包的script.js文件,然后执行该脚本 node script.js,甚至有时候 node node_modules/package_name/bin/node_executable_file

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.