2016-04-03 4 views
1

ich die folgende Fehlermeldung erhalten, wenn mein Web läuft App mit dem folgenden Befehl: KnotenReact.js - operationStore.getItems ist keine Funktion

Uncaught Typeerror gulpfile.babel --harmony: operationStore.getItems nicht eine Funktion

Ich bin nicht einmal annähernd zu wissen, was das Problem ist. Hier sind die Schluckdatei und wo der Fehler auftritt.

Der Code funktionierte bisher bei der Deklaration von allem außerhalb meiner app.js in der Datei index.ejs. Aber das hat mich davon abgehalten, es6 in den serverseitigen Dateien zu verwenden, die ich brauche. Also bin ich tot, dass die Verwendung der - Harmonie-Flagge es mir erlauben würde, es6 zu verwenden. Aber ich kann nicht über diesen Fehler hinwegkommen, der passiert, wenn ich das Harmonieflaggen verwende.

getItems ist eindeutig eine Funktion für mich, was passiert?

Main.jsx

var Login = require('./auth/LogApp.jsx'); 
var operationStore = require('./stores/OperationStore.jsx'); 
var initial = operationStore.getItems(); 

Gulpfile.babel.js

var gulp = require('gulp'); 
var LiveServer = require('gulp-live-server'); 
var browserSync = require('browser-sync'); 
var browserify = require('browserify'); 
var source = require('vinyl-source-stream'); 
var babelify = require('babelify'); 

gulp.task('live-server', function(){ 
    var server = new LiveServer('server/main.js'); 
    server.start(); 
}) 

gulp.task('bundle',['copy'], function(){ 
    return browserify({ 
     entries:'app/main.jsx', 
     jquery : 'jquery-browserify', 
     debug:true, 
    }) 
     .transform(babelify, 
      { 
       "presets": ["es2015", "react", "stage-1"], 
       "plugins": ["transform-decorators-legacy", "transform-function-bind"], 
       extensions: [".jsx", ".js",] 
      }) 
     .bundle() 
     .pipe(source('app.js')) 
     .pipe(gulp.dest('./.tmp')); 
}) 

gulp.task('copy', function() { 
    gulp.src(['app/*.css', 'app/Icons/**/*','app/stores/**/*', 'app/helper/**/*', 'app/dispatcher.js','bundle.js', 'app/helpers/RestHelper.js', 
      'app/actions/OperationActionCreator.jsx', 'app/actions/SurgeonActionCreator.jsx', 
      'app/actions/PatientActionCreator.jsx','app/actions/ORActionCreator.jsx', 
      'node_modules/guid/guid.js','node_modules/jquery/**/*', 'bower_components*/**/*']) 
     .pipe(gulp.dest('./.tmp')); 
}) 

gulp.task('serve', ['bundle', 'live-server'], function(){ 
    browserSync.init(null,{ 
     proxy:"http://localhost:7777", 
     port: 9001 
    }) 
}) 

gulp.run('serve') 

OperationStore.jsx

var operationStore = function() { 

    var operations = []; 

    var listeners = []; 

    var updateOperations = function(helper){ 
     helper.get("api/operations") 
      .then(function(data){ 
       operations = data; 
       triggerListeners(listeners); 
      }); 
    } 

    updateOperations(helper); 

    function getItems(){ 
     return operations; 
    }; 

    var addOperationItem = function(operation) { 
     operations.push(operation); 
     triggerListeners(listeners); 
     helper.post("api/operations", operation); 
    } 

    var deleteOperationItem = function (operation) { 
     var index; 
     operations.filter(function (_operation, _index) { 
      if (_operation.name == operation.name) { 
       index = _index; 
      } 
     }); 
     operations.splice(operation, 1); 
     triggerListeners(listeners); 

     //added this 
     helper.del('api/operations/'+ operation._id); 
    } 

    var onChange = function(listener){ 
     listeners.push(listener); 
     return listeners; 
    } 

    var triggerListeners = function(listeners) { 
     listeners.forEach(function(listener) { 
      listener(operations); 
     }) 
    } 

    var registerEvent = function (event) { 
     var split = event.type.split(':'); 
     if (split[0] === 'operation-item') { 
      switch (split[1]) { 
       case "add": 
        addOperationItem(event.payload); 
        break; 
       case "delete": 
        deleteOperationItem(event.payload); 
        break; 
      } 
     } 
    } 

    var dispatchRegister = function(dispatcher) { 
     dispatcher.register(registerEvent); 
    } 

    dispatchRegister(dispatcher); 

    return { 
     getItems: getItems, 
     onChange: onChange, 
     addOperationItem: addOperationItem, 
     deleteOperationItem: deleteOperationItem, 
     triggerListeners: triggerListeners, 
     dispatchRegister: dispatchRegister, 
     registerEvent: registerEvent, 
     updateOperations: updateOperations 
    } 
}(); 

Antwort

0

Ich wusste, es war etwas einfach, aber fundamental ich verpaßt. Die OperationStore.jsx benötigt am Ende module.exports. Hier die neue jsx, die funktioniert.

import RangeDate from './../components/src/range_date' 

function operationStore(){ 
    ... 
} 

module .exports = new operationStore();