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

问题描述 投票:0回答:3

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

npm install serialport

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

并且软件包仍然像这样安装

[email protected] ../../../../node_modules/serialport

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

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

附注它不是特定于串行端口模块的。他们所有人都在发生这种情况。

node.js installation global local npm
3个回答
34
投票

我的大部分答案都可以找到: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
目录来修复它。


7
投票

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

基础package.json

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

0
投票

我也有同样的问题。对您来说太晚了,但对于面临同样问题的其他人来说,您可能忘记在目录中运行此代码:

npm init

回答一些有关您的项目的问题;这将创建 package.json 文件。 然后你就可以在本地安装你的包了:

npm install <package-name>
© www.soinside.com 2019 - 2024. All rights reserved.