OSX Sierra安装Node-RED后启动失败提示“command not found”求助
先别急,我来帮你一步步排查解决这个问题。结合你的环境(OSX Sierra 10.13.x、Node 9.11.1、npm 5.6.0),大概率是npm全局安装路径未加入系统PATH或者安装时的权限/路径问题,下面是具体的排查和解决步骤:
1. 确认Node-RED是否真的完成全局安装
首先先检查npm全局包的安装目录,在终端执行:
npm list -g node-red
如果返回类似/usr/local/lib/node_modules/node-red这样的路径,说明已经安装;如果提示empty或者找不到,那先重新执行全局安装(注意如果之前安装有问题,先卸载再装):
npm uninstall -g node-red npm install -g node-red
如果安装时出现权限报错(比如EACCES),不要用sudo装(会导致后续权限问题),优先用下面的方式处理npm全局权限。
2. 检查npm全局安装目录是否在系统PATH中
OSX下,brew安装的Node/npm,全局包的可执行文件默认在/usr/local/bin或者~/npm-global/bin(如果你自定义过路径)。先查看你的PATH里有没有这个目录:
echo $PATH
如果输出里没有/usr/local/bin,那问题就找到了——Node-RED的可执行文件node-red在这个目录里,但系统找不到它。
把全局目录加入PATH的方法:
根据你用的shell(bash或zsh),修改对应的配置文件:
- 如果是bash:编辑
~/.bash_profile文件,加入一行:export PATH="/usr/local/bin:$PATH" - 如果是zsh:编辑
~/.zshrc文件,加入同样的内容。
保存后,执行下面的命令让配置生效:
# bash用户 source ~/.bash_profile # zsh用户 source ~/.zshrc
3. 直接指定可执行文件路径启动测试
如果上面的步骤还没解决,可以先直接用全路径启动Node-RED,确认文件存在:
首先找到npm全局可执行文件的目录:
npm bin -g
这个命令会输出对应路径,比如/usr/local/bin,然后执行:
/usr/local/bin/node-red
如果能正常启动,说明就是PATH的问题,回到步骤2确认配置是否正确。
4. 排查brew安装的Node/npm路径是否正确
brew安装的Node默认路径是/usr/local/Cellar/node/9.11.1,对应的npm和node命令应该在/usr/local/bin下是软链接。可以检查:
which node which npm
如果返回的是/usr/local/bin/node和/usr/local/bin/npm,说明路径正常;如果不是,可能brew的链接有问题,执行:
brew link node
如果提示链接冲突,先执行:
brew unlink node && brew link node
5. 特殊情况:npm全局路径自定义过
如果你之前修改过npm的全局安装路径(比如用npm config set prefix命令),那需要把自定义的prefix/bin目录加入PATH。先查看当前的prefix设置:
npm config get prefix
假设返回的是~/npm-global,那就要把~/npm-global/bin加入PATH,方法同步骤2。
按照上面的步骤一步步来,应该就能解决command not found的问题了。
内容的提问来源于stack exchange,提问作者Ivti

