找不到http-server命令

时间:2017-10-20 14:32:05

标签: node.js httpserver

我正在尝试运行一个基本的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:问题解决了谢谢!

4 个答案:

答案 0 :(得分:11)

您可能没有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

  • 在macOS /Users/username/
  • On * nix:/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

答案 1 :(得分:4)

如果您执行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

答案 2 :(得分:1)

npm install http-server -g.

请全局安装http-server,然后您就可以运行命令

http-server -o

答案 3 :(得分:0)

如果你在这里是因为你想在本地测试你的 Angular PWA 项目,你需要使用 npm install --global http-server 全局安装 http-server 包,然后只有你可以运行 http-server