我想在本地安装软件包,但 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 相关问题中所引用。
有人可以给我一些提示吗?非常感谢。
附注它不是特定于串行端口模块的。他们所有人都在发生这种情况。
我的大部分答案都可以找到: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
目录来修复它。
如果您尝试安装包的文件夹中有 package.json 文件,那么它将正确创建 node_modules 文件夹。
基础package.json
{
"name": "application-name",
"version": "0.0.1"
}
我也有同样的问题。对您来说太晚了,但对于面临同样问题的其他人来说,您可能忘记在目录中运行此代码:
npm init
回答一些有关您的项目的问题;这将创建 package.json 文件。 然后你就可以在本地安装你的包了:
npm install <package-name>