Я использую конструкцию структуры, показанную на Meteor Meetup Antwerp Питере СуданМетеор пакета только подход, вызов функции пространства имен из другого пакета
Я имел успех, имея различные пространства имен имен (USERAUTH, AppRoute) в зависимости от функциональности мой модуль. Тем не менее, я хочу иметь специальное пространство приложений UP (UserPortal) и иметь пространства имен, такие как UP.UserAuth, UP.AppRoutes.
Я не могу назвать функцию в UP.UserAuth, которая проверяет вход в систему.
Мои вверх-приложение пакет package.js выглядит следующим образом
Package.describe({
name: 'up-app',
version: '0.0.1',
summary: 'User Portal Application',
});
var both=['server','client'];
var server ='server';
var client ='client';
Package.onUse(function(api) {
api.versionsFrom('1.0.3.2');
api.use('templating',client);
api.use('iron:[email protected]',both);
api.use('tracker',both);
api.use('underscore',both);
api.use('blaze',both);
api.use(['up-user-auth'],both);
api.addFiles(['lib/namespace.js','lib/routes.js'],both);
api.addFiles(['views/dashboard.html','views/loading.html'],client);
api.export('UP');
});
Package.onTest(function(api) {
api.use('tinytest');
api.use('up-app');
api.addFiles('tests/up-app-tests.js');
});
я намерен использовать приложение, чтобы объявить все мои зависимости приложения в одном пакете.
Мой вверх-приложение/Библиотека/routes.js файл выглядит следующим образом:
Router.configure({
layoutTemplate: 'upDashBoard',
loadingTemplate: 'upLoading'
});
Router.onBeforeAction(UP.UserAuth.loginRequired, {
except: ['login','install']
});
Router.route('/', {
name: 'home'
});
Мой вверх пользователем Auth пакет имеет это в его package.js
Package.describe({
name: 'up-user-auth',
version: '0.0.1',
// Brief, one-line summary of the package.
summary: 'User Authentication and Roles Management',
});
Package.onUse(function(api) {
var both = ['server', 'client'];
var server = 'server';
var client = 'client';
api.versionsFrom('1.0.3.2');
api.use([
'tracker',
'service-configuration',
'accounts-base',
'underscore',
'templating',
'blaze',
'session',
'sha',
]
,client);
api.use([
'tracker',
'service-configuration',
'accounts-password',
'accounts-base',
'underscore',]
,server);
api.use(['iron:[email protected]','copleykj:mesosphere'], both);
api.imply(['accounts-base','accounts-password'], both);
api.addFiles(['lib/namespace.js','lib/loginValidation.js','lib/loginMethods.js'],both);
api.export('UP', both);
});
Package.onTest(function(api) {
api.use('tinytest');
api.use('up-user-auth');
api.addFiles('tests/server/up-user-auth-tests.js');
});
Мой вверх/Библиотека/namespace.js выглядит следующим образом:
UP={};
UP.UserAuth={
loginRequired: function() {
return console.log("loginControllers");
}
}
Если удалить вторую ссылку на UP={};
тогда я получаю сообщение об ошибке сказавНевозможно установить свойство «USERAUTH» неопределенной, но когда я добавляю все это я получаю Не удается прочитать свойство «loginRequired» неопределенной
Что я делаю не так?
Это приводит к ошибке циклической зависимости, так как до-приложение использует вверх user-auth для доступа к UP.UserAuth. – Churchill