NPM 对等需求错误

NPM peer requirements error

如果这是一个愚蠢的问题,我深表歉意 - 我是一个十足的 Meteor Noob...

我正在使用 meteor 1.3.1 和 Socially 教程作为参考构建一个应用程序,因为它所做的事情与我需要的非常相似,但我一直在我的控制台中看到同样的错误并且无法理解出来了。

我已经安装了 accounts.ui 软件包:

meteor add dotansimha:accounts-ui-angular

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

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

我安装了 angular,.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。我装那个版本就解决了

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

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

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

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

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

解决方法:

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

    mkdir packages
    cd packages
    git clone https://github.com/dotansimha/accounts-ui-angular.git
    
  2. 在文件中packages.js更改

    -- name: "dotansimha:accounts-ui-angular",
    ++ name: "dotansimha:accounts-ui-angular-moded",
    
  3. 在文件帐户-ui-angular.js中更改以下内容以删除版本检查

    的行
    -- import {checkNpmVersions} from 'meteor/tmeasday:check-npm-versions';
    
    if (!window.angular) {
      require("angular");
    }
    
    -- checkNpmVersions({
      -- 'angular': '^1.2.27'
    -- });
    
  4. 然后回到你的应用程序根目录,卸载原始包并安装我们刚刚修改的包。

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

注意,我对此很陌生(首先是 Whosebug post,哇)。我不知道为什么会出现这个问题,但这是我目前找到的唯一解决方案。希望这对您有所帮助,希望官方软件包 / meteor 能尽快得到修复!

请确保您安装了 angular 1.2.27 以上版本,因为我们不再对其进行验证。

meteor list

似乎违规代码行已从 dotansimha:dotansimha:accounts-ui-angular

中删除

但是版本号没有跳动。还是0.0.4

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

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

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

  • 尝试{
  • 如果(包['modules-runtime']){
  • var require = Package['modules-runtime'].meteorInstall();
  • require('angular');
  • }
  • } 赶上(e){
  • 抛出新错误('angular package is missing');
  • }

将此处的代码还原为早期版本

  • if (!window.angular) {
  • require("angular");
  • }

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