Friday 5 May 2017

TypeError: f is not a function after Babel Transpilation in Node

I have this web app running on Node. Code was in ES5. Now i'm changing the code to ES6 and using Babel Transpilation. Transpilation runs fine, but i'm getting the below error while starting the server:

*TypeError: _routes2.default.init is not a function*

server.js code refers routes.js.

server.js Code:

import express from 'express';
import routes from './routes';

let app = express();
routes.init(app); //Issue line
app.set('view engine','vash');

app.listen(4000, function(){
    console.log("server listening on port 4000");
});

routes.js code:

import homeController from '../controllers/homeController';

class routes{
    init(app){
        app.get('/', homeController.index);       
    }
}
export default routes;

Transpiled server.js code:

'use strict';

var _express = require('express');

var _express2 = _interopRequireDefault(_express);

var _routes = require('./routes');

var _routes2 = _interopRequireDefault(_routes);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var app = (0, _express2.default)();
_routes2.default.init(app);
app.set('view engine', 'vash');

app.listen(4000, function () {
  console.log("server listening on port 4000");
});

Transpiled routes.js Code:

'use strict';

Object.defineProperty(exports, "__esModule", {
        value: true
});

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

var _homeController = require('../controllers/homeController');

var _homeController2 = _interopRequireDefault(_homeController);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var routes = function () {
        function routes() {
                _classCallCheck(this, routes);
        }

        _createClass(routes, [{
                key: 'init',
                value: function init(app) {                        
                        app.get('/', _homeController2.default.index);                        
                }
        }]);

        return routes;
}();

exports.default = routes;

I have omitted lots of code for clarity. I'm breaking my head on this error for many hours. Any help will be appreciated.

Server is started by running the command: node server.js



via Boney

No comments:

Post a Comment