我正在尝试运行一个基本的http服务器来测试一些html文件,并且我一直遇到同样的错误。
我做了很多次sudo npm install -g http-server
,但每次我尝试
simple git:(master) http-server
我一直收到这个错误:
zsh: command not found: http-server
我尝试过其他变种,比如http-server / 8000,我尝试过使用不同的命令语法,但似乎没有任何工作。
我的npm版本是5.5.1,我的节点版本是8.3.0,我的操作系统是Mac OSX Sierra v10.12.6
如果你能提供帮助,或者如果你看到我做错了什么,请告诉我,我只是没有注意到。
编辑:微小的更新我能够得到一个服务器与python,但我真的想知道为什么这不起作用。
编辑2:问题解决了谢谢!
您可能没有PATH
中的npm二进制文件。
通过运行echo $PATH
确保你的npm二进制文件在路径中。您应该在打印输出中的某处看到类似于:
/home/bob/.npm-packages/bin:/usr/lobal/bin:/other/paths/that/contain/bins
/home/bob/.npm-packages/bin
是我运行npm -g install whatever
时安装我的npm二进制文件的目录。
如果你没有看到类似的东西,请阅读Fixing npm permissions,它将指导你确保你的环境设置正确。选项2明确谈到修复PATH
。
我通常做的另一个方便的事情是将所有这些添加到您的主目录中的.bashrc
或.bashprofile
:
/Users/username/
/home/username/
的.bashrc
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
但是,由于看起来您使用的是zshell,因此您必须使用它们遵循rc文件的任何约定。
您可以修复它,或者,您可以在项目的包级别安装http-server,然后通过npm命令启动它。
运行npm install --save-dev http-server
并放入你的package.json:
{
"scripts": {
"start": "http-server ."
}
}
然后跑
npm start
如果你做sudo npm install -g
并且你没有设置npm
前缀,那么该文件可能安装在/usr/local/bin
中,但它可以在任何地方安装或多或少。它安装的目录可能不在你的$PATH
中,所以你应该弄清楚它的安装位置,然后更新你的$PATH
以包含它。
我强烈建议你避免使用npm避免运行sudo
。相反,你可以在你的npm配置中更新你的prefix
(或者在~/.npmrc
中手动更新为prefix=~/.npm
,但这取决于你。然后你还必须确保~/.npm/bin
在你的路径中。
即使全局包有时也很方便,如果它们与特定项目相关联,我认为最好只将它作为项目的一部分安装并在那里运行:
cd /path/to/project/with/http-server
npm install http-server
# any of:
npx http-server
node_modules/.bin/http-server
此外,如果您有package.json#scripts
,您可以引用任何本地安装的二进制文件,如:
"scripts": {
"server": "http-server"
}
然后使用npm run server
。
npm install http-server -g.
请在运行命令后全局安装http-server
http-server -o