NodeJS server - ReferenceError getData is not defined - but isn't it?

Viewed 190

I'm getting a ReferenceError (not defined) but I don't see why. It's defined in the module dataController.js (at end)

Server.js

    {
    const express = require('express');
    
    const app = express(); 
    var path = require('path');
    var bodyParser = require('body-parser');
    var dataController = require('./dataController');
    const { nextTick } = require('process');
    //app.use(express.static(path.join(__dirname, ''))); //original worked with 'build'
    const basePathToData = path.join(__dirname, './');
    console.log('Basepath: '+ basePathToData);
    const options  = {
        dotfiles: 'allow',
        etag: true,
        extensions: ['htm', 'html','json'],
        index: false,
        maxAge: '1d',
        redirect: true,
        setHeaders: function (res, path, stat) {
          res.set('x-timestamp', Date.now());
    }
    };
    
    app.use(express.static(path.join(__dirname, 'build'))); //original
    //app.use(express.static(basePathToData, options));
    
    const port = 3003;
    app.get('/api/data',dataController.getData);
    console.log("Route ready: /api/data");
    
    app.listen(process.env.PORT || port); 
    console.log('listening on port: '+ port.toString());
    }

dataController.js

const path = require('path');
const fs = require('fs');

const basePathToData = path.join(__dirname, '.');

const getJsonData = function (basePathToData, filename) {
    var filename = path.join(basePathToData, filename);
    return JSON.parse(fs.readFileSync(filename, 'utf-8'));
};

exports.getData = function (request, response) {
    var data = getData(basePathToData, 'Vitals_observation.json');
    setTimeOut(function () {
        return response.send(data);
    }, 100);
};

Here's the key part of the error from running server.js:

listening on port: 3003 ReferenceError: getData is not defined at exports.getData (C:\Code-repos\partners-api\dataController.js:13:16) at Layer.handle [as handle_request] (C:\Code-repos\partners-api\node_modules\express\lib\router\layer.js:95:5) at next (C:\Code-repos\partners-api\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Code-repos\partners-api\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Code-repos\partners-api\node_modules\express\lib\router\layer.js:95:5) at C:\Code-repos\partners-api\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\Code-repos\partners-api\node_modules\express\lib\router\index.js:335:12) at next (C:\Code-repos\partners-api\node_modules\express\lib\router\index.js:275:10) at SendStream.error (C:\Code-repos\partners-api\node_modules\serve-static\index.js:121:7) at SendStream.emit (events.js:375:28)

I'm ready for a teachable moment and a chance to learn something... Thanks

1 Answers

Your mistake is here:

var data = getData(basePathToData, 'Vitals_observation.json');

It should be getJsonData

Related