【问题标题】:http-server command not found未找到 http-server 命令
【发布时间】:2018-04-01 18:15:48
【问题描述】:

我正在尝试运行一个基本的 http-server 来测试一些 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:问题已解决,谢谢!

【问题讨论】:

    标签: node.js httpserver


    【解决方案1】:

    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/
    • 在 *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
    

    【讨论】:

    • 如果你不讨厌你的手指,你也可以用i代替install-D代替--save-dev
    • 我刚查了没看到,怎么解决?
    • @Kirk 真实数据。但我通常会在答案中使用命令开关来避免不可避免的问题:“'i' 代表什么?”。
    • @JordanForbes 真棒,如果解决了所有问题,别忘了接受答案。
    • PATH="$(npm bin -g):$PATH" 如果您的 npm bin 绑定到某个版本,例如/usr/local/Cellar/node/11.1.0/bin.
    【解决方案2】:
    npm install http-server -g.
    

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

    http-server -o
    

    【讨论】:

    • 我不得不使用sudo npm install http-server -g,然后这才奏效。谢谢!
    【解决方案3】:

    如果您使用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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多