2016-08-31 15 views
1

角度テンプレートを使用して流星アプリを作成していて、Meteor-Upを使用してサーバにデプロイしました。私は次のことを受けていますサーバー上でしかし私はlocalhost上の罰金、それを実行します:引数 'HomeCtrl'は関数ではなく、メテオ - アップでデプロイした後に定義されていません

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でそれをインポートする必要があります。

関連する問題