node.js - Node 版本管理器 (NVM) npm 将模块安装到公共(public)文件夹

标签 node.js

我已经按照这篇文章中的说明为 node.js 安装了 NVM:

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

当我在 Node 版本之间切换然后使用 npm 安装模块时,所有模块都放置在同一个“node_modules”文件夹(~/node_modules/)中,而不是特定于该 Node 版本的“node_modules”目录中?

你知道如何解决这个问题吗?

最佳答案

基于 https://github.com/creationix/nvm/pull/97 的评论:

When installing packages with npm using the global switch -g the package ends up in the proper directory (i.e. .nvm/$VERSION/lib/node_modules), however node is unable to require it since it somehow isn't searching on it's prefix.

所以使用 npm install -g xxxxx 会将模块放置在 NVM 的正确位置,但是如果您尝试 require 其中一个 Node 找不到模块.我还在玩这个,如果我找到解决方案会更新。

更新

NPM 将 node_modules 放在哪里? (见 https://docs.npmjs.com/files/folders)

  • 本地安装(默认):将东西放在当前包根目录的 ./node_modules 中。
  • 全局安装(使用 -g):将内容放在/usr/local 或安装 Node 的任何位置。
  • 如果你要require(),请在本地安装它。
  • 如果您要在命令行上运行它,请全局安装它。
  • 如果两者都需要,则在两个地方都安装,或者使用 npm link

所以我所做的是在生成 package.json 的项目根目录中运行 npm init(参见 http://npmjs.org/doc/init.html)。现在,当我运行 npm install xxxxx 时,它会在我的项目文件夹中创建一个 node_modules 目录(我将其添加到我的 .gitignore 中)。这适用于我在代码中需要的模块。

对于诸如 CoffeeScript 之类的命令,我使用 npm install -g coffee-script 安装它,它将它放在正确的目录 (.nvm/$VERSION/lib/node_modules) 中。虽然我不需要这些模块(npm 链接应该可以解决这个问题),但我可以运行命令 - 即 coffee

关于node.js - Node 版本管理器 (NVM) npm 将模块安装到公共(public)文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133784/

相关文章:

javascript - 如何在 mocha 中测试 Uncaught Error ?

node.js - extraHeaders 未附加到请愿书上

node.js - Node 、要求、单例还是非单例?

node.js - Chrome 操作系统支持 Node Js 应用吗?

javascript - 如何在express js中包含静态文件

node.js - 在 NodeJs 中检索 Azure 环境变量

php - 在 AngularJS 应用程序中正确包含 WordPress 博客的策略

javascript - 使用 fs.rename() 的 EPERM 错误

node.js - 使用 AWS 的动态网站

javascript - 如何查找与查询中具有完全相同数组条目的文档