Как экспортировать функцию из одного файла в другой на Node.js?

Кусочек функции которую пытаюсь экспортировать

var Foo = function(dir, pathToFile){
    let Mode = require('stat-mode'); // проверка дириктори или файл
    let temp; //вспомогательная переменная 
    let jsonFile = { 
        table: []
     };
..............
}

Делаю экспорт

module.exports = Foo;

Импортирую так

const foo = require("../index.js");

Вызов функции

foo(dir, 'data/firstScreen.json');

Как результат я получаю ошибку

foo(dir, 'data/firstScreen.json');
TypeError: foo is not a function

Вот ссылки на код из моих файлов pastebin.com/9sAqN878 index.js pastebin.com/ap9PKZYN routes.js


Ответы (1 шт):

Автор решения: nörbörnën

Вот ссылки на код из моих файлов pastebin.com/9sAqN878 index.js pastebin.com/ap9PKZYN routes.js

index.js

const express = require('express');
const app = express();
const todoRoutes = require('./routes/routes');
var Foo = function(dir, pathToFile){}
module.exports = Foo;

routes.js

const {Router} = require('express');
const router = Router();
const foo = require("../index.js");
...
var myModule = require('../index.js');

Что же мы видим? - циклическую зависимость.

Что же происходит?

a.js грузит b.js В этот момент b.js пытается загрузить a.js. Для того, чтобы предотвратить зацикливание, незавершенная копия объекта exports из a.js возвращается в модуль b.js, затем загрузка b.js завершается, и его exports объект передается модулю a.js.

Вам, вероятно, лучше реструктурировать свой код так, чтобы не возникала циклическая зависимость. Может быть, создать третий файл, который используется двумя другими.

→ Ссылка