Как app.use () файл, который имеет некоторые другие app.use () внутри nodeJS - PullRequest
0 голосов
/ 13 марта 2019

Так что, возможно, на первый взгляд это звучит довольно сложно. Я объясню, что я на самом деле хочу сделать: я работаю с NodeJS & expressJS и пытаюсь модулировать проект, вот что я хочу сделать: Допустим, в главном файле .js сервера есть файл router.get / post / put / delete и т. Д., Разделенный на некоторые другие файлы для каждого типа: Пример:

...
app.use(require('./routes/account_method1.js'));
app.use(require('./routes/account_method2.js'));
app.use(require('./routes/games_method1.js'));
app.use(require('./routes/games_method3.js'));
app.use(require('./routes/emails_method5.js'));
...

Я выполнил это довольно просто:Я просто использовал код, упомянутый выше, в основном файле .js и в необходимых файлах, которые я только что поместил:

module.exports = router;

И это почти все. Но проблема в том, что теперь я хочу что-то сделатьнапример:

...
app.use(require('./routes/account/panel.js'));
app.use(require('./routes/games/panel.js'));
app.use(require('./routes/emails/panel.js'));
...

И в каждом файле ./routes/x/panel.js есть конкретные файлы .js, необходимые для использования, например, в ./routes/account.panel.js.хотел бы иметь и работать:

app.use(require('./account_method1.js'));
app.use(require('./account_method2.js'));

Предполагая, что account_method1.js и account_method2.js находятся в одном каталоге с конкретным файлом panel.js. А затем требуйте эти файлы panel.js на главном сервере.JS файл.

Так что если теперь я чAve:

 Server ---> ./routes/account_method1.js
        ---> ./routes/account_method2.js

Я хотел бы сделать это:

 Server ---> ./routes/account/panel.js ---> ./routes/account_method1.js
                                            ./routes/account_method2.js

Я не буду вставлять сюда любой код, потому что это просто проблема способа импорта файлов, и яуже упоминалось, как мне нужны мои файлы .js на главном сервере.

Так ... что вы думаете?

РЕДАКТИРОВАТЬ:

Я думаю, покажет вам, где находитсяпроблема:

. / route / test.js (этот файл нужно добавить в приложение другой файл, register.js)

 const express = require('express');
 const router = express.Router();

 console.log("BEFORE ROUTER.USE");
 router.use(require('./register.js'));
 console.log("AFTER ROUTER.USE");

module.exports = router;

. / app.js (основной .jsфайл сервера)

 ....
 var test = require('./routes/test.js');
 app.use(test);
 ....

. / маршруты / register.js

 const express = require('express');
 const router = express.Router();
 ...
 //some router.post / get / delete 
 ...
 module.exports = router;

И когда я пытаюсь получить доступ к URL-адресам из этого файла register.js, они не работают

1 Ответ

0 голосов
/ 13 марта 2019

Лучше использовать маршрутизатор :

например: controller/api.js

const express = require('express')
const router = express.Router()

  router.get('/', function(req, res) {
      //console.log(res.apiData);
      res.json({message:'ok'});
  });

  module.exports = router;

и более поздние

app.use('/api', require('controller/api'))

Маршрутизатор можно импортироватьна другой роутер.Я использую это:

main.js:

app.use(require('./controller'));

controller / index.js:

const express = require('express')
const router = express.Router()
const isAuth = require('../middlewares/is-auth')
const isValidApiKey = require('../middlewares/is-api-key')
const isAdmin = require('../middlewares/is-admin')

router.use('/auth', require('./auth'));
router.use('/profile', isAuth, require('./profile'));
router.use('/api', isValidApiKey, require('./api'));
router.use('/admin', isAuth, isAdmin, require('./admin'))

Если код службы запроса длинный, вы можететакже переместите его в отдельный файл, но я думаю, что лучше разделить его на меньшие, многократно используемые части и использовать его в качестве промежуточного программного обеспечения, например:

route.all('/:orderId(\\d+)', fileOrderMiddleware,  fileAltMiddleware, hasTransferMiddleware, orderServeMiddleware);
...