2016-08-31 5 views
1

Я создаю приложение метеоритов, используя угловые шаблоны, и только что развернул его на своем сервере, используя Meteor-Up. Он прекрасно работает на моем локальном хосте, однако на сервере я получаю следующее:Аргумент 'HomeCtrl' не является функцией, получившей неопределенность после развертывания с помощью Meteor-Up

Argument 'HomeCtrl' is not a function, got undefined 

Мой код (с некоторыми заменены ...):

homeCtrl.js

import angular from 'angular'; 
import angularMeteor from 'angular-meteor'; 
import { Controller } from 'angular-ecmascript/module-helpers'; 
import { Projects } from '/lib/collections'; 
import faker from 'faker'; 

export default class HomeCtrl extends Controller { 
    constructor() { 
     super(...arguments); 

     this.helpers({ 
      ... 
     }); 
    } 
... 
} 

app.js

import angularMeteor from 'angular-meteor'; 
import 'angular-sanitize'; 
import 'angular-ui-router'; 
import angular from 'angular'; 
import Loader from 'angular-ecmascript/module-loader'; 
import HomeCtrl from '../controllers/homeCtrl' 
import WizardCtrl from '../controllers/wizardCtrl' 
import RoutesConfig from '../routes'; 

const App = 'appName'; 

angular.module(App, [angularMeteor, 'ui.router']); 

new Loader(App) 
    .load(HomeCtrl) 
    .load(WizardCtrl) 
    .load(RoutesConfig); 

routes.js

import { Config } from 'angular-ecmascript/module-helpers'; 

export default class RoutesConfig extends Config { 

    configure() { 
    this.$stateProvider 
     .state('home', { 
     url: '/', 
     templateUrl: 'client/templates/home.html', 
     controller: 'HomeCtrl as home' 
     }) 
    ... 

    this.$urlRouterProvider.otherwise('/'); 
    } 
} 

RoutesConfig.$inject = ['$stateProvider', '$urlRouterProvider']; 

mup.js

module.exports = { 
    servers: { 
    one: { 
     host: '...', 
     username: '...', 
     // pem: 
     password: '...' 
     // or leave blank for authenticate from ssh-agent 
    } 
    }, 

    "setupMongo": false, 

    meteor: { 
    name: 'app-name', 
    path: '../', 
    servers: { 
     one: {} 
    }, 
    buildOptions: { 
     serverOnly: true, 
    }, 
    env: { 
     ROOT_URL: '...', 
     MONGO_URL: '...' 
    }, 

    dockerImage: 'abernix/meteord:base', 
    deployCheckWaitTime: 60 
    }, 

}; 

Что я пропустил в развертывании или что-то не так с кодом?

+0

Столкнувшись с той же проблемой здесь :(. Вы найдете решение? –

+0

Я закончил тем, что не использовал классы ES6 и вернулся к использованию стандартных функций контроллера. Я отправлю небольшой фрагмент примера ниже @abdullah – DJDMorrison

ответ

2

Я вернусь только к использованию стандартных функций контроллера, а не к классам ES6. Таким образом, выше HomeCtrl станет:

var app = angular.module('home-module', []); 

app.controller('homeCtrl', ['$scope', function($scope){ 
    $scope.helpers({ 
     ... 
    }); 

    ... 
}]); 

Вам все еще нужно, чтобы импортировать его в app.js, однако вам не нужно, чтобы загрузить его с загрузчиком.