为什么 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 版本,而这个版本具有我想要的功能。
所以为了解决这个问题,我只是在依赖项中使用'@'指定了所需的版本。
我认为这必须改变,比如当你通过依赖安装一个包时,它应该安装最新版本,只有在@指定的时候才安装旧版本。
我正在尝试创建一个 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 版本,而这个版本具有我想要的功能。 所以为了解决这个问题,我只是在依赖项中使用'@'指定了所需的版本。
我认为这必须改变,比如当你通过依赖安装一个包时,它应该安装最新版本,只有在@指定的时候才安装旧版本。