Аргумент 'HomeCtrl' не является функцией, неопределенной после развертывания с помощью Meteor-Up

Я создаю метеорное приложение, используя угловые шаблоны, и только что развернул его на своем сервере с помощью 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
  },

};

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

1 ответ

Решение

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

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

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

    ...
}]);

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

Другие вопросы по тегам