Javascript 如何在没有根访问权限的情况下设置npm(节点包管理器)?

Javascript 如何在没有根访问权限的情况下设置npm(节点包管理器)?,javascript,node.js,npm,Javascript,Node.js,Npm,将npm设置为root用户是非常困难的。除非您必须以root用户身份运行npm命令(不推荐)。所以我想我应该尝试将它设置为非root用户 根据npm文档,没有root访问权限的非root用户可以通过以下方式设置npm: 创建一个.npmrc文件,其中root、binroot和manroot指向用户拥有的文件夹 然后运行安装脚本 嗯。安装很好 但是node无法看到npm提供的包 那么,我如何让node知道npm提供的包呢?(当我以前以root用户身份安装npm时,我不需要做任何事情)。 我可以在节

将npm设置为root用户是非常困难的。除非您必须以root用户身份运行npm命令(不推荐)。所以我想我应该尝试将它设置为非root用户

根据npm文档,没有root访问权限的非root用户可以通过以下方式设置npm:

  • 创建一个
    .npmrc
    文件,其中
    root
    binroot
    manroot
    指向用户拥有的文件夹
  • 然后运行安装脚本 嗯。安装很好

    但是node无法看到npm提供的包

    那么,我如何让node知道npm提供的包呢?(当我以前以root用户身份安装npm时,我不需要做任何事情)。 我可以在节点内设置
    require.PATH
    ,或者设置
    node\u PATH
    环境变量,但是设置为什么


    谢谢。

    通过一点探索,您似乎可以:

  • 将节点路径设置为npm的根目录,或
  • 在节点中,调用
    require.path.push('path\u to\u npm\u root')
  • 这对我很有用:

  • 创建一个
    ~/.node
    文件夹

    mkdir ~/.node
    
  • 编辑
    ~/.npmrc
    并添加行

    prefix = ~/.node
    
  • 编辑您的
    ~/.profile
    ~/.bash\u profile
    并添加这些行

    PATH="$HOME/.node/bin:$PATH"
    NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH"
    

  • 现在我可以做一些事情,比如
    npm-g安装http服务器
    ,它将在没有root的情况下安装到
    ~/.node
    。有了这个选项,当我输入http服务器时,它就会运行。

    如果您试图从repl调试它,请参阅npm现在不带节点吗?我从来没有运行过npm命令作为根,除非我使用-g。。。