NPM 对等要求错误

Posted

技术标签:

【中文标题】NPM 对等要求错误【英文标题】:NPM peer requirements error 【发布时间】:2016-07-27 20:26:07 【问题描述】:

抱歉,如果这是一个愚蠢的问题 - 我是一个完整的流星菜鸟......

我正在使用流星 1.3.1 和 Socially 教程作为参考构建一个应用程序,因为它的功能与我需要的非常相似,但我一直在控制台中看到相同的错误,只是想不通.

我已经安装了 accounts.ui 包:

meteor add dotansimha:accounts-ui-angular

然后将该包作为依赖项添加到我的 Angular 模块中:

angular.module('dkfitness', [
'angular-meteor',
'ui.router',
'angularMoment',
'accounts.ui'
]);

我已经安装了 .meteor/versions 列表:

angular@1.3.9_2

但我一直看到以下错误:

check-npm-versions.js:17 Error: Cannot find module 'angular/package.json'(…) check-npm-versions.js:48 WARNING: npm peer requirements not installed:- angular@^1.2.27 not installed.

我试图将 angular 的包版本强制为 1.2.27 我也跑过:

meteor npm install --save angular

两者都不能解决问题。 谁能告诉我我做错了什么?

【问题讨论】:

您找到解决此问题的方法了吗? 还没有 - 需要尝试 angular 1.3.1 安装,但不在我可以再测试两天的地方。 【参考方案1】:

这绝不是一种修复,而是一种临时解决方法。

这个问题是由 npm 版本检查包依赖引起的。

import checkNpmVersions from 'meteor/tmeasday:check-npm-versions';

if (!window.angular) 
  require("angular");


checkNpmVersions(
  'angular': '^1.2.27'
);

解决方法:

    在您的应用程序目录中创建一个新的“packages”文件夹并从 github 克隆包目录(需要 Git..)

    mkdir packages
    cd packages
    git clone https://github.com/dotansimha/accounts-ui-angular.git
    

    在文件 packages.js 中改变

    -- name: "dotansimha:accounts-ui-angular",
    ++ name: "dotansimha:accounts-ui-angular-moded",
    

    在文件 accounts-ui-angular.js 中更改以下内容以删除版本检查的行

    -- import checkNpmVersions from 'meteor/tmeasday:check-npm-versions';
    
    if (!window.angular) 
      require("angular");
    
    
    -- checkNpmVersions(
      -- 'angular': '^1.2.27'
    -- );
    

    然后回到你的应用根目录,卸载原包并安装我们刚刚修改的那个。

    meteor remove dotansimha:accounts-ui-angular
    meteor add dotansimha:accounts-ui-angular-moded
    

请注意,我对此很陌生(第一个 *** 帖子,呜呜)。我不知道为什么会出现这个问题,但这是我目前找到的唯一解决方案。希望这会有所帮助,并希望官方包/流星很快就会得到修复!

确保您安装了 Angular 1.2.27 以上版本,因为我们不再验证它。

meteor list

【讨论】:

谢谢亚历克斯,您是否与安装的 2 个单独版本的 Angular 有任何冲突? 不,我确实验证过,一切看起来都很好【参考方案2】:

似乎有问题的代码行已从 dotansimha:dotansimha:accounts-ui-angular 中删除

但是版本号没有跳跃。它仍然是 0.0.4

无论如何要解决这个问题,只需删除并添加包。 流星删除 dotansimha:accounts-ui-angular 流星添加 dotansimha:accounts-ui-angular

@alexbouchardd:感谢您发现这个问题。

更新:问题也是由于accounts-ui-angular.js中的这一部分

试试 if (Package['modules-runtime']) var require = Package['modules-runtime'].meteorInstall(); require('angular'); 捕获(e) throw new Error('angular package is missing');

将这里的代码还原为较早的版本

if (!window.angular) 要求(“角度”);

按照 alexbouchardd 的步骤克隆和替换 dotansimha:dotansimha:accounts-ui-angular

【讨论】:

谢谢!我尝试删除该软件包并重新安装它,但仍然收到该 npm 错误。我想知道这个包是否可能被缓存在某个地方......【参考方案3】:

尝试安装 Angular 1.3.1。安装那个版本后就解决了。

【讨论】:

Angular 1.3.1 打破了我的分页 :-(

以上是关于NPM 对等要求错误的主要内容,如果未能解决你的问题,请参考以下文章

安装拉力编码依赖项时未安装 NPM 警告所需的对等依赖项

如何解决对等依赖错误:包 react@15.3.2 不满足其兄弟的 peerDependencies 要求

npm 安装失败,npm 错误!无效的 json 响应

冲突的对等依赖关系:webpack@4.46.0 npm ERR!节点模块/webpack

npm WARN jest-react-native@17.0.0 需要 whatwg-fetch@^1.0.0 的对等点,但没有安装

无法通过 npm 安装 gulp-jshint