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

use*_*536 18 install global local node.js npm

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

npm install serialport
Run Code Online (Sandbox Code Playgroud)

我没有.npmrc命令,我没有使用-g标志,所以我不知道它为什么不在本地安装.这是来自配置转储的片段,显示全局为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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pic*_*els 31

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

我的理解是,npm会尝试将它安装在一个合理的位置.因此,如果您有一个project/node_modules目录并且您在/ project并且执行npm install它将使用product/node_modules.

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

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


小智 7

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

基本的package.json

{
    "name": "application-name",
    "version": "0.0.1"
}
Run Code Online (Sandbox Code Playgroud)