172

这是我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"

4

18 回答 18

168

看起来您遇到了一个已经存在很长时间但还没有解决方案的错误。在 npm 存储库中有几个未解决的问题:

在第一个中,人们列出了您可以尝试的几种解决方法。

另一种解决方案可能是(有点骇人听闻)将依赖项明确列为第一级依赖项。这需要您维护列表,但实际上它必须很少进行。

于 2013-09-04T16:11:24.203 回答
136

我有非常相似的问题,删除整个node_modules文件夹并重新安装对我有用。从IT Crowd节目中学到了这个技巧!

rm -rf node_modules
npm install
于 2014-05-09T23:48:57.547 回答
55

我正在使用Windows机器。

  1. 我删除了 node_modules 文件夹。
  2. 不知何故,正在创建 package.lock.json 文件。我删除了那个文件。
  3. 然后 npm 安装。
  4. 干净的构建。
  5. 跑。
于 2017-06-19T09:35:17.390 回答
17

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

如果您的依赖项未在该文件中列出,它将永远不会与该npm install命令一起安装。

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

于 2015-06-04T16:52:57.877 回答
13

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

错误的:

{
    "name": "My Awesome Package"
}

正确的:
{
    "name": "my-awesome-package-name"
}
于 2019-03-13T18:09:54.457 回答
12

就我而言,它有助于删除node_modulespackage-lock.json.

之后只需重新安装所有内容npm install

于 2018-01-24T13:49:56.987 回答
11

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

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

我通过运行发现了这一点npm update

升级到最新版本后(4.4 -> 5.9);这得到了修复。

于 2016-03-24T16:37:15.120 回答
9

我怀疑您面临的问题是您的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)加载 grunt resolve 模块。这里的讨论似乎表明这样做是为了避免加载“全局”模块,但我认为我们想要的是从“我的项目”模块加载。

于 2013-08-31T00:44:59.527 回答
4

你可能需要安装 grunt-cli,在安装 npm 之前试试这个:

sudo npm install -g grunt-cli

这修复了 grunt 不会为我退出的问题,您还需要一个有效的 grunt 文件。

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

于 2013-08-23T11:50:07.007 回答
4

以防万一有人遭受这种困境并且碰巧犯了与我一样的asanine错误,这就是我的情况。在将头撞到墙上一个小时后,我意识到我的 json 嵌套不正确,并且关键的“依赖项”位于关键的“存储库”中。
不用说,没有明显的错误,也没有安装任何模块。

于 2015-03-18T23:29:40.757 回答
4

值得一提的是,确保您的依赖项应该dependencies属于您的package.json(而不是devDependencies)的一部分。

我的问题与OP基本相同:

  • repo1通过在其他仓库中安装私人仓库(我们称之为) "module-name": "git+ssh://git@myserver:user/my-repo-name.git"(我们称之为repo2),
  • repo2's中,不存在node_modules一个包依赖项。repo1
  • 我的愚蠢错误!..repo1列出了该依赖devDependencies项而不是dependencies
  • 将 my 中的依赖repo1package.jsondevDependencies todependencies
  • 在我的repo2, 我删除了我的node_modulesand package-lock.json, did npm install, 瞧!... 依赖就在那里!
于 2019-06-02T13:53:58.933 回答
3

发生在旧节点版本中。像这样使用最新版本的节点:

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

编辑:还要确保你save.
例如:npm install yourmoduleName --save

于 2018-10-24T03:43:41.577 回答
3

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

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

这将做的是,它将安装模块所需的所有软件包,并且您不会收到该错误。

于 2018-10-18T10:26:14.163 回答
2

当我在 Windows 上安装干净的 Node 开发环境时收到此错误。

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

npm install -g grunt --save-dev

这会将本地 grunt 依赖项安装到您的项目中。下一个:

npm install

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

多田!

于 2014-10-19T22:29:36.163 回答
0

我花了几个小时试图调试这个问题,最后是我将 NODE_ENV= env 变量设置为“生产”。

来自https://riptutorial.com/node-js/example/10101/setting-node-env--production- “当 NODE_ENV 环境变量设置为 'production' 时 package.json 文件中的所有 devDependencies 将被完全忽略运行 npm install 时。”

于 2021-04-23T00:38:31.310 回答
0

我认为我也遇到了这个问题,我找到的最佳解决方案是查看我的控制台并找出引发的错误。所以,我仔细阅读,发现问题是我没有在我的package.json. 我添加了这些信息,一切都很好。

于 2019-08-19T18:43:30.950 回答
0

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

于 2017-04-25T19:15:58.777 回答
0

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

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

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

npm install -g @angular/cli@latest

之后,当我为新项目ng serve复制上述步骤时,该命令可以正常工作。

于 2021-09-27T12:33:00.307 回答