npm将所有模块安装在/usr/local/lib/node_modules/中。

10

我在Ubuntu 12.10上安装了node.js 0.8.14。我在我的主目录下创建了一个子目录node_modules,我想要在那里安装一些本地的node模块,但是在该目录中运行
npm install myModule 会将这个模块安装在/usr/local/lib/node_modules/(与使用-g标志安装模块的行为相同)。

.bashrc中没有node路径。

你有任何想法如何安装本地的node模块吗?

3个回答

20

经过进一步的研究,我找到了解决方案。

运行命令 npm config ls 发现默认配置项 global=false (可以用 npm config ls -l 查看默认配置项) 被 /home/vsdev/.npmrc/usr/local/etc/npmrc 中的 global=true 覆盖了。

将其恢复为 global=false 就解决了该问题。


太棒了!我刚接触Node,一直在苦苦挣扎,因为本地的Grunt找不到。花了很长时间才发现问题出在这个配置上。谢谢! - Luís Bianchin

4

这很奇怪。

  • 提醒一下,您不需要创建node_modules目录,npm会为您创建
  • 通常情况下,npm只会安装到当前目录。即使您要安装的软件包已配置为首选全局安装,除非您显式传递-g参数,否则npm将在本地安装它。
  • 请运行以下shell命令并确认npm是否真的是真正的npm?
    • which npm
    • alias | grep npm

1

npm install会加载所有的node_modules,如果它是版本3的行为http://blog.npmjs.org/post/110924823920/npm-weekly-5或者像@vsdev提到的那样,一旦您确保它是版本3的行为并且您想继续使用它,那么就可以了,否则请按照以下步骤操作:

1- 卸载项目中node_modules文件夹中的所有模块:npm uninstall *

2- 告诉npm使用旧版捆绑方式进行安装:

npm install --legacy-bundling “永久”替代方法:

将您的npm配置设置为始终使用旧版捆绑方式...

npm set legacy-bundling=true

...然后像往常一样运行:

npm install

*使用旧版捆绑方式获取依赖项将需要更长时间,因为将安装许多不同版本的相同依赖项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接