Как экспортировать функцию из одного файла в другой на 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 шт):
Вот ссылки на код из моих файлов 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.
Вам, вероятно, лучше реструктурировать свой код так, чтобы не возникала циклическая зависимость. Может быть, создать третий файл, который используется двумя другими.