npm不会在本地安装软件包。怎么了?

时间:2012-06-11 17:53:54

标签: node.js install global local npm

我想在本地安装软件包,但是npm始终将软件包安装到全局位置。我正在运行以下命令:

npm install serialport

我没有.npmrc命令而且我没有使用-g标志,所以我不知道它为什么不在本地安装。这是配置转储中的一个片段,显示global是false:     $ npm config ls -l | grep全球     global = false     globalconfig =“/ usr / local / etc / npmrc”     globalignorefile =“/ usr / local / etc / npmignore”

这些包仍然像这样安装

serialport@0.7.3 ../../../../node_modules/serialport

因此,除非我对“本地”的含义完全错误,否则这似乎是错误的。我的印象是当前工作目录中的“本地”意味着我可以在主代码文件中执行“require”。请参阅前面的npm相关问题中引用的http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

有人可以给我一些提示吗?非常感谢你。

P.S。它不是特定于serialport模块的。它发生在所有人身上。

2 个答案:

答案 0 :(得分:31)

我的大部分答案都可以找到:http://npmjs.org/doc/folders.html#More-Information

据我所知,npm会尝试将其安装在合理的位置。因此,如果你有一个project/node_modules目录并且你在/ project并且执行npm install它将使用product/node_modules

现在,如果你不小心做了一个cd project/css并执行npm install,那么npm会遍历,直到找到你的node_modules目录。这是为了防止您意外地将其安装在project/css

因此,在您的情况下,您在项目路径中的某个位置有一个node_module目录。所以我猜你可以通过删除该目录或在项目文件夹中手动创建node_modules目录来修复它。

答案 1 :(得分:7)

如果您尝试安装软件包的文件夹上有package.json文件,那么它将正确创建node_modules文件夹。

基本的package.json

{
    "name": "application-name",
    "version": "0.0.1"
}