为什么 Meteor 包 ian:accounts-ui-bootstrap-3 作为依赖项安装时表现不同?

Why the Meteor package ian:accounts-ui-bootstrap-3 is behaving differently if is installed as a dependency?

我正在尝试创建一个 Meteor 包,它具有包 ian:accounts-ui-bootstrap-3 作为依赖项。我像这样在 package.js 中添加了依赖项:

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.2');
  api.use(['ian:accounts-ui-bootstrap-3'], 'client');
 api.addFiles('package-name.js');
});

在控制台添加我的包后,以下包被添加到项目中:

accounts-base                added, version 1.2.0                                                                                                                                                                                                                                                                                                  
me:my-package-name           added, version 0.0.1                                                                                                                                                    
handlebars                   added, version 1.0.3                                                                                                                                                    
ian:accounts-ui-bootstrap-3  added, version 1.0.7                                                                                                                                                    
localstorage                 added, version 1.0.3                                                                                                                                                    
service-configuration        added, version 1.0.4                                                                                                                                                    
stylus                       added, version 1.0.7

问题是帐户系统无法正常工作。在浏览器中我得到这个错误:

Uncaught TypeError: Cannot read property 'push' of undefined

'push' 是

的 属性
Template.__body__.__contentParts

如果我手动添加 ian:accounts-ui-bootstrap-3 它工作正常,我没有收到错误。但是当我这样做时,安装在项目上的包有点不同:

accounts-base                added, version 1.2.0                                                                                                                                                    
anti:i18n                    added, version 0.4.3                                                                                                                                                    
ian:accounts-ui-bootstrap-3  added, version 1.2.59                                                                                                                                                   
localstorage                 added, version 1.0.3                                                                                                                                                    
service-configuration        added, version 1.0.4                                                                                                                                                    
stylus                       added, version 1.0.7  

如您所见,我没有把手了,取而代之的是 anti:i18n。我试图在我的包中安装 anti:i18n 作为依赖项,但我遇到了相同的浏览器错误。

任何人都可以说,我做错了什么以及为什么包在安装不同时表现得那样(手动与依赖)。 为了给你这个例子,我刚刚创建了一个空包,只有这个依赖项,所以没有其他东西可以影响正在安装的包的数量。

尝试使用 'imply' 而不是 'use'。这会将包暴露给全局范围。如果没有更多关于您的问题的详细信息,这可能最有可能解决问题(我希望):

api.imply(['ian:accounts-ui-bootstrap-3']);

而不是

api.use(['ian:accounts-ui-bootstrap-3'], 'client');

我发现了问题。当作为依赖包安装时:ian:accounts-ui-bootstrap-3 将安装版本 1.0.7,这是一个旧版本。 手动安装时,它会安装 1.2.59 版本,而这个版本具有我想要的功能。 所以为了解决这个问题,我只是在依赖项中使用'@'指定了所需的版本。

我认为这必须改变,比如当你通过依赖安装一个包时,它应该安装最新版本,只有在@指定的时候才安装旧版本。