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

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

npm install serialport 

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

而包仍然是这样安装的

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

所以,除非我对“本地”的含义完全错误,否则这似乎是错误的。 我的印象是“当地”在当前的工作目录中,以便我可以在我的主代码文件中做“要求”。 请参阅: http : //blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/ ,在前面的npm相关问题中提到。

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

PS它不是专用于串口模块。 这一切都发生在他们身上。

       

网上收集的解决方案 "npm不会在本地安装软件包。 怎么了?"

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

我所理解的是,npm会尝试将其安装在合理的位置。 所以,如果你有一个project/node_modules目录,你在/项目和做npm安装它将使用product/node_modules

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

所以在你的情况下,你的项目path中有一个node_module目录。 所以我的猜测是,您可以通过删除该目录或在您的项目文件夹中手动创build一个node_modules目录来修复它。

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

基本的package.json

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