【问题标题】:How do I install a module globally using npm?如何使用 npm 全局安装模块?
【发布时间】:2011-08-14 15:26:05
【问题描述】:

我最近在 OSX 上安装了 Node.js 和 npm 模块,我认为设置有问题:

npm install [MODULE] is not installing the node.js module to the default path 
which is /usr/local/lib/node_modules.

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    如果要全局安装 npm 模块,请确保使用新的 -g 标志,例如:

    npm install forever -g

    自 1.0rc 起关于 npm 模块安装的一般建议(取自blog.nodejs.org):

    • 如果您要安装一些您想在程序中使用的东西,请使用 require('whatever'),然后安装它 本地,在你的根 项目。
    • 如果您要安装一些要在 shell 中使用的东西,请在 命令行什么的,安装 它是全局的,所以它的二进制文件 最终进入您的 PATH 环境 变量。

    我最近刚刚使用了这个建议,并且非常顺利。我永远安装在全局(因为它是一个命令行工具)和我所有的应用程序模块在本地。

    但是,如果您想在全局范围内使用某些模块(即 express 或 mongodb),请接受此建议(也来自 blog.nodejs.org):

    当然,在某些情况下 你想两者都做。咖啡脚本和 Express 都是很好的应用示例 具有命令行界面的,如 以及图书馆。在这些情况下,你 可以执行以下操作之一:

    • 在两个地方都安装它。说真的,你的磁盘有那么短吗 空间?没关系,真的。它们很小 JavaScript 程序。
    • 全局安装,然后 npm link coffee-script 或 npm link express (如果您使用的平台支持 符号链接。)然后你只需要 更新全局副本以更新所有 符号链接也是如此。

    第一个选项是我最好的 观点。简单、清晰、明确。这 如果你是,第二个真的很方便 将在 a 中重用同一个库 一堆不同的项目。 (更多关于 npm 链接在以后的部分中。)

    我没有测试其中一种变体,但它们似乎非常简单。

    【讨论】:

    • 感谢您的澄清。 Isaacs 应该用上面的文本替换整个 npm manfile 和 git wiki。可以消除大众的困惑。
    • 谢了。这派上用场了,我被这个变化抓住了。在某些时候,npm install 提供了命令行访问权限,然后它就消失了,我没有足够密切地关注项目以赶上过渡。
    • 这解释了为什么我的 Apache 配置目录中有一个节点模块。 . .
    • 来自blog.node.js.org :通常全局二进制文件安装在 {prefix}/bin 中,全局模块安装在 {prefix}/node_modules 中,本地模块在 ./node_modules 中,可执行文件在 ./node_modules 中/.bin/ 。您可以运行npm prefix 来获取本地前缀,并运行node prefix -g 来查看全局前缀:)
    • "如果你正在安装你想在你的程序中使用的东西,使用 require('whatever'),然后 在本地安装它,在你的项目的根目录。” - 我认为,如果模块包含已编译的二进制文件,这不是一个好主意:它必须在 linux 和 windows 上正确重新编译。我认为必须使用 NODE_PATH 环境变量设置此类模块(nodejs.org/api/…
    【解决方案2】:

    在 Mac 上,我发现输出包含我正在寻找的信息:

    $> npm install -g karma
    ...
    ...
    > ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
    > (node-gyp rebuild 2> builderror.log) || (exit 0)
    ...
    $> ls /usr/local/share/npm/bin
    karma nf
    

    /usr/local/share/npm/bin 添加到我的.bash_profile 中的export PATH 行,保存它并sourceing 之后,我就可以运行了

    $> karma --help
    

    通常。

    【讨论】:

      【解决方案3】:

      我喜欢在应用文件夹的根目录中使用 package.json 文件。

      这是我用的一个

      nvm use v0.6.4
      npm install
      

      【讨论】:

        【解决方案4】:

        我在 Ubuntu 上安装 Express 时遇到问题:

        如果由于某种原因缺少 NPM 命令,请使用 npm help 测试 npm 命令。如果没有,请按照以下步骤操作 - http://arnolog.net/post/8424207595/installing-node-js-npm-express-mongoose-on-ubuntu

        如果只是 Express 命令不起作用,请尝试:

        sudo npm install -g express
        

        这让我在使用 Windows7 和 OSX 时一切正常。

        希望这会有所帮助!

        【讨论】:

          【解决方案5】:

          你需要有超级用户权限,

           sudo npm install -g <package name>
          

          【讨论】:

            【解决方案6】:

            根据官方文档推荐的步骤在我的 Macbook 上对我有用。

            总结步骤:

            1. 使用以下命令实例化 nvm:

              卷曲 -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh |重击

            您可以在此页面查看最新版本: https://github.com/nvm-sh/nvm

            1. 如果文件已经不存在,则在主目录中创建 .zshrc。

              触摸.zshrc

            2. 将以下内容放入 .zshrc 文件中

            导出 NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && 。 "$NVM_DIR/nvm.sh" # 这会加载 nvm

            1. 使用命令安装 nvm

            nvm install --lts

            1. 重启终端 - 你现在可以使用 npm 安装全局包了。

            【讨论】:

              【解决方案7】:

              在 Ubuntu 中,在 .bashrc 文件中设置 node_modules 的路径

              export PATH="/home/username/node_modules/.bin:$PATH"

              【讨论】:

                【解决方案8】:

                您可能没有在全局位置(例如/usr/local/lib/node_modules)安装节点模块的写入权限,在这种情况下,请以 root 身份运行 npm install -g package。

                【讨论】:

                  猜你喜欢
                  • 2015-05-31
                  • 2012-09-17
                  • 2015-02-07
                  • 2013-09-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-04-13
                  • 1970-01-01
                  相关资源
                  最近更新 更多