Как экспортировать функцию из app.js и импортировать ее из другого js-файла? - PullRequest
0 голосов
/ 10 мая 2019

Я настраиваю новый сервер с узлом js и платформой express (Версия 4.16).Я хочу направить свои Rest-Endpoint.В моем файле route.js я хочу вызвать функцию из app.js (мой сервер), но получаю ошибку типа, когда функция, которую я хочу вызвать из другого файла, не является функцией.Ошибка:

TypeError: callFunction.getDataFromDb is not a function
at C:\Users\---\WebstormProjects\pwa_node_server\routes\recipes.js:7:18
    at Layer.handle [as handle_request] (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\index.js:174:3)
    at router (C:\Users\---\WebstormProjects\pwa_node_server\node_modules\express\lib\router\index.js:47:12)

Мой сервер:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var axios = require('axios');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var recipesRouter = require('./routes/recipes');

var cors = require('cors');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors({credentials: true, origin: true}));


app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/recipes', recipesRouter);
// app.use('/poste-dein-rezept', indexRouter);


// catch 404 and forward to error handler
app.use(function (req, res, next) {
    console.log("catch404");
    next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

var getDataFromDb = function (res) { // This function to call in another file

};

module.export = {
  getDataFromDb
};
module.exports = app;



Мой файл маршрута:

var express = require('express');
========
var router = express.Router();
var callFunction = require('../app');

router.get('/', function(req, res, next) {
        console.log('Recipes-Endpoint received Request');
    callFunction.getDataFromDb(res);
});
module.exports = router;

Я просто хочу вызвать функцию из другого файла.

1 Ответ

1 голос
/ 10 мая 2019

Вы используете module.export.Правильное имя свойства module.exports, которое вы также используете.

Один из способов решить эту проблему:

app.getDataFromDb = getDataFromDb;
module.exports = app;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...