哪个 node.js npm 安装包适合全局/本地 sudo/notsudo 的哪种组合?

哪个 node.js npm 安装包适合全局/本地 sudo/notsudo 的哪种组合?

我想在 MacOSX 上安装这样的软件包,但也对 Windows 或 Linux 版本感兴趣:

npm install express
npm install swig
npm install mongodb
npm install consolidate
npm install http-auth

如果我不使用 sudo 调用 npm,其中一些将会失败:

Error: EACCES, open '/Users/me/.npm/cookie/0.1.2/package.tgz'
npm ERR!  { [Error: EACCES, open '/Users/me/.npm/cookie/0.1.2/package.tgz']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/me/.npm/cookie/0.1.2/package.tgz',
npm ERR!   parent: 'express' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator

如果我使用 sudo 安装,文件最终会位于我当前目录下,并在 node_modules 下。

如果我使用 -g 命令,就会遇到访问问题。

如果我将 -g 与 sudo 一起使用,它会安装,但节点应用程序无法找到软件包:

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'

我是否遗漏了重要的东西?安装这些软件包的正确方法是什么?(有人告诉我,应该首选全局安装,以便所有应用程序始终链接到最新的软件包版本,因此如果有任何不同,请告诉我)

答案1

Node.js 将向上遍历文件夹,直到找到您的包,因此您可以在主文件夹中安装所有内容:

cd ~
npm install express

答案2

npm help 5 npm-folders手册页中:

  • 本地安装(默认):
    将内容放入./node_modules当前包根目录中。

  • 全局安装(带有-g):
    将内容放入/usr/local或安装节点的任何位置。

  • 如果要使用require()它,请在本地安装它。

  • 如果您要在命令行上运行它,请全局安装它。

  • 如果两者都需要,则在两个地方安装,或者使用 npm link。

我唯一一次使用sudo安装是nw因为我希望它链接到/usr/bin。在调用之后,sudo我遇到了类似的错误,因为root拥有我的~/.npm/_locks目录。

每次install遇到错误,直到我chown ~/.npm返回~/.npm/_locks给我的用户。

按照手册页的说明进行操作并~/.npm每次进行检查sudo

相关内容