node.js - 为什么 npm 在我的主目录中安装本地包?

标签 node.js npm

这里是 Node.js 新手,Windows 10。我在没有 的目录中 npm install-ed 了一些包(没有 -g)包.json。 npm 将包放在 C:\Users\{MyName}\node_modules\ 中。

现在我看到了一些奇怪的行为:

  • 当我在我的项目目录中时(有 package.json 但还没有 node_modules/),npm list npm list -g 都显示一个空列表
  • 当我在非项目目录中时(没有 package.json)...
    • npm list -g 仍然显示一个空列表
    • 但是,npm list 会显示 C:\Users\{MyName}\node_modules\ 中的所有内容

问题 1. 这里发生了什么?显然,npm's default global path should be C:\Users\{MyName}\AppData\Roaming\npm\ .如果是这样,为什么要使用 C:\Users\{MyName}\node_modules\

问题 2. 我如何摆脱这个烂摊子? Node.js 从 C:\Users\{MyName}\node_modules\ 导入包没有问题,但我希望 npm 正确列出它们。如何删除半全局包,正确重新安装它们,并确保不再发生这种情况?

最佳答案

好吧,事实证明我一直错误地npm install-ing 包没有 package.json。我第一次这样做是在我的主目录 (C:\Users\{MyName}\) 中。这导致 npm 在主目录中创建 node_modules/package-lock.json。进一步(错误的)尝试在我的项目中安装包——仍然缺少 package.json——导致 npm 向上遍历,直到找到初始的 node_modules/ 目录,并在那里安装所有东西。 Because my home directory is among the places Node.js looks for modules ,直到现在我才注意到我的错误。 :P

关于node.js - 为什么 npm 在我的主目录中安装本地包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894761/

相关文章:

node.js - npm - 如何显示包的最新版本

node.js - 访问 Express JS/Connect JS 中间件内部的 "app"变量?

node.js - 在 mac osx Mojave 上安装 Angular cli 7 时出错

javascript - 发布标记为私有(private)的包给 verdaccio

javascript - 如何更改一个组件的 bower-installer 路径

javascript - npm 未运行 package.json 中的脚本

callback - 如何对从未调用过的 npm ERR cb() 进行故障排除

javascript - nodejs/js : Only first function of async.系列回调后依然执行

node.js 子进程更改目录并运行该进程

node.js - 使用 Node.js 处理 SAML 的身份提供商端