Спасибо, что нашли время посмотреть на мой вопрос. Я начну с того, что предоставлю всю необходимую информацию как можно лучше.
Вот моя структура каталогов.
Примечание: () Звездочка представляет файл. (-) Дефис представляет собой каталог. *
* app.js
- config
* modules.js
* functions.js
* info.js
- routes
* root.js
Объяснение того, что делают файлы.
config / modules.js содержит список необходимых модулей следующим образом.
module.exports = {
express: require( 'express' ),
bodyParser: require( 'bodyParser' ),
someModule: require( 'someModule' ),
.
.
. *the list goes on*
}
config / functions.js просто имеет несколько функций, таких как getCurrentTime и т. Д., И работает нормально, поэтому его можно игнорировать; и это не связано с проблемой.
config / info.js имеет некоторые константы приложения, такие как порт, dbURL и т. Д. Это выглядит так,
module.exports.app = {
port: 3000,
db: "mongodb://localhost/dev-db-something"
}
Когда мне требуется файл config / modules в файле app.js, я могу отлично использовать переменные, и никаких проблем нет. Но когда мне требуется тот же конфиг / модули в файле маршрутов / корня, он выдает ошибку «Не могу прочитать свойство« Маршрутизатор »из undefined.
Код маршрута / корневого файла выглядит следующим образом:
const modules = require( '../config/modules' );
const express = modules.express;
const router = express.Router();
router.get( '/', (req, res) => {
res.send( 'Welcome!' );
} );
module.exports = router;
Я использую VS Code для этого. Когда я парю над «модулями». В файле app.js VS Code показывает мне список необходимых модулей, показывая всплывающую подсказку. Но когда я делаю то же самое в файле routs / root, он показывает мне const модули ": любой" hover-pop. Чтобы быть более точным в отношении вопроса, это "const modules: any" появляется только после того, как я добавлю "const router = express.Router ();"