NPM 不安装模块依赖项

这是我在父项目中包含的模块的 package.json:

{
"version": "0.0.1",
"name": "module-name",
"dependencies": {
"express": "3.3.4",
"grunt": "0.4.1",
"grunt-contrib-compass": "0.4.0",
"grunt-contrib-copy": "0.4.1",
"grunt-contrib-cssmin": "0.4.1",
"grunt-contrib-jshint": "0.6.3",
"grunt-contrib-requirejs": "0.4.1",
"grunt-contrib-uglify": "0.2.2",
"grunt-contrib-watch": "0.5.1",
"grunt-express-server": "0.4.1",
"grunt-karma": "0.4.5",
"grunt-regex-replace": "0.2.5",
"request": "2.25.0"
},
"scripts": {
"postinstall": "grunt install"
}
}

需要注意的一点是,这个模块包含在一个私有回购中,我将它包含在父 package.json中,比如: "module-name": "git+ssh://git@myserver:user/module-name.git"

293548 次浏览

您可能需要安装 grunt-cli,请在进行 npm 安装之前尝试这样做:

sudo npm install -g grunt-cli

这修正了咕哝不退出我,你还需要一个有效的咕哝文件。

资料来源: https://stackoverflow.com/a/16456467/241294

我怀疑您面临的问题是,您的 package.json文件不在与 Gruntfile.js相同的目录中。当您运行 grunt xxx命令时,您会得到如下错误消息:

Local Npm module "xxx" not found. Is it installed?

就目前而言,解决办法是:

  • 在与 Gruntfile.js 相同的目录中创建 package.json
  • 定义您的 grunt 项目所需的模块
  • 执行 npm install在本地加载它们
  • 现在所需的 grunt 命令应该可以工作了。

恕我直言,我们不能从父 npm 模块(例如,在同一个项目的父目录中的 package.json)加载重复的解析模块,这是令人遗憾的。关于 给你的讨论似乎表明这样做是为了避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块中加载。

看起来你遇到了一个已经存在很长时间的 bug,而且还没有解决方案。在 npm 存储库中有几个关于这种情况的公开问题:

在第一个例子中,人们列出了几个你可以尝试的变通方法。

另一种解决方案可能是显式地将依赖项列为第一级依赖项。这就要求你维护这个列表,但是实际上这样做的频率非常低。

我有非常类似的问题,删除整个 node_modules文件夹和重新安装为我工作。这招是从 IT 人群节目学来的!

rm -rf node_modules
npm install

在 Windows 上安装干净的 Node dev 环境时,我收到了这个错误。

为了解决这个问题,我进入了新的项目目录(我刚用 yo angular搭建了这个目录) ,输入了两个命令:

npm install -g grunt --save-dev

这将安装本地咕噜依赖项到您的项目。下一步:

npm install

这将确保安装所有(新的)项目依赖项。

当当当!

以防有人遭受这种困境,碰巧犯了和我一样愚蠢的错误,我的情况是这样的。在我的脑袋撞到墙上一个小时后,我意识到我的 json 嵌套不正确,并且密钥“依赖项”在密钥“存储库”中。
不用说,没有明显的错误,也没有安装任何模块。

如果继承了此代码,则可能是依赖项和版本被锁定,并且您有一个。/npm-收缩膜。Json 文件。

如果该文件中没有列出您的依赖项,那么它将永远不会用 npm install命令安装。

您将需要手动安装软件包,然后运行 npm shrinkwrap来更新 shrinkwraps 文件。

OP 对于旧版本的节点可能是正确的,但是,对于节点4.4.1我也遇到了同样的问题。

它很可能链接到您正在使用的节点版本。尝试升级到最新版本。如果某些依赖项与节点版本不兼容,它们不会传递性地加载。

我通过运行 npm update找到了这个。

在升级到最新版本(4.4-> 5.9)之后,这个问题得到了解决。

我也有同样的问题。但是在同一台机器上,有一个项目有一个很好的 package.json,它成功地安装了我的所有依赖项。在另一个项目中,不管我做什么,都没有安装 package.json 依赖项。 我只是复制 package.json 并粘贴到另一个项目中! 我发现的区别只是文件开始处的空行。不知道,或者它影响任何东西,也许是其他问题。但问题只是 package.json 文件。

我正在使用窗口机器。

  1. 我删除了 node _ module 文件夹。
  2. 不知怎么的 package.lock.json 文件被创建了,我删除了那个文件。
  3. 然后安装 npm。
  4. 身材干净。
  5. 快跑。

在我的情况下,它有助于消除 node_modulespackage-lock.json

然后用 npm install重新安装所有程序。

解决这个问题的另一种方法是将其添加到模块 package.json脚本部分

"preinstall": "npm install {Packages You depend on}"

它会做的是,它会安装模块所需的所有软件包,你不会得到这个错误。

使用最新版本的节点如下:

$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule < br >

编辑: 也确保你 save
例句: npm install yourmoduleName --save

还要检查您的软件包名称是否被正确接受:

错:

{
"name": "My Awesome Package"
}

正确答案:
{
"name": "my-awesome-package-name"
}

值得一提的是,要确保您的依赖关系应该位于 package.jsondependencies部分(而不是 devDependencies)。

我的问题基本上和 OP 一样:

  • 通过其他回购协议中的 "module-name": "git+ssh://git@myserver:user/my-repo-name.git"安装一个私人回购协议(我们称之为 repo1) ,
  • repo2node_modules中,不存在来自 repo1的一个包依赖关系。
  • 我犯了一个愚蠢的错误! . . repo1devDependencies而不是 dependencies中列出了这个依赖项
  • repo1package.json中的依赖项从 devDependencies移动到 dependencies
  • 在我的 repo2,我删除了我的 node_modulespackage-lock.json,做了 npm install,瞧! ... 依赖是存在的!

我认为我也面临这个问题,我发现的最佳解决方案是查看我的控制台,并找出正在抛出的错误。因此,我仔细阅读了它,发现问题在于我没有在 package.json中指定我的回购、描述和有效名称。我添加了那些信息,一切都很好。

我花了几个小时来调试这个问题,最后我把 NODE _ ENV = env 变量设置为“ production”。

Https://riptutorial.com/node-js/example/10101/setting-node-env——production- : “当 NODE _ ENV 环境变量设置为‘ production’时,在运行 npm install 时,package.json 文件中的所有 devDependency 都将被完全忽略。”

我在尝试创建 第一个角应用时遇到了这个问题。

ng new angular-tour-of-heroes
cd angular-tour-of-heroes
ng serve --open

因此,每次我尝试编译应用程序时,都会出现依赖性错误。运行后终于能够解决这个问题

npm install -g @angular/cli@latest

之后,当我复制上面的步骤 新项目时,ng serve命令没有任何错误。

修好

正如@Monkpit 所说: 删除 包裹锁定 Json并重新运行 npm 安装为我解决了这个问题。但是不要忘记推新的 包裹锁定 Json * 。

解释

不要下载继承依赖关系将是一个可怕的问题和 Nodejs 没有

错误是由旧的包锁引起的。由于使用未在官方存储库中托管的库而导致的 json: https://www.npmjs.com/示例:

"dependencies": {
"express": "4.17.1",
"xyz": "git+https://github.com/bar/xyz.git"
}

如果包 xyz 正确地驻留在 Www.npmjs.com上并被添加到 package.json 中,npm 安装将正确地下载 某某依赖项。如果包是 特别的或正在开发中,您可能会遇到这个问题。

这个文件 包裹锁定 Json非常重要。如果你删除它(作为几个答案的建议) ,你可能会有另一个严重的问题: 删除“包锁定. json”快速解决冲突

最后,如果出现这种 依赖项没有下载的错误:

{
"name": "acme",
"version": "1.0.0",
"dependencies": {
"foo": "git+https://github.com/bar/foo.git"
}
}
  • 验证在 acme/node _ module 中不存在 foo 依赖项
  • 如果正确地添加了依赖项,请检查 的 package.json
  • 删除本地项目的 node _ module (示例中为 acme)
  • 删除软件包锁定
  • 运行 npm 安装
  • 验证在 acme/node _ module 中存在 foo 依赖项
  • 将更新后的文件 包裹锁定 Json推送到您的 git 存储库

可能存在版本冲突,我在 npm 8遇到过同样的问题。

起初,我试图使用 npm instasll <module>手动安装缺少的依赖项,但是 npm抱怨说,两个包的依赖项之间存在版本冲突。我发现其中两个包需要不同版本的依赖项。我解决了冲突,删除了 node_modules,在 npm install之后,按照预期安装了缺失的依赖项,而没有手动安装它。

我所做的努力和帮助:

rimraf node_modules
npm cache clean --force
npm i

最重要的是: 关闭 VS 代码并重新打开它。 只有在我这样做之后,所有的错误都消失了。

祝你好运!