2016-08-31 2 views
1

각도 템플릿을 사용하여 유성 앱을 만들고 방금 Meteor-Up을 사용하여 내 서버에 배포했습니다. 그러나 그것은 내가 받고있어 서버에서 내 로컬 호스트에서 잘 실행 다음인수 'HomeCtrl'은 유추 - 배포로 정의되지 않은 함수입니다.

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({ 
      ... 
     }); 
    } 
... 
} 
을 (일부는 ... 교체로)

Argument 'HomeCtrl' is not a function, got undefined 

내 코드는

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); 
을 app.js

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에 가져올 필요가있다.

관련 문제