Nodejs 将变量从路由器文件传递到另一个路由器文件

时间:2021-05-15 18:14:30

标签: node.js express router express-router

我需要将一个名为 path 的变量从路由器文件 lessonsRouter.js 传递到另一个路由器文件 lessons.js

我的文件夹结构

routes
|
+--lessons.js
|
+--lessonsRouter.js

lessonsRouter.js

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

router.get('/*/([A-Z][a-z]+)/README.md', (req, res) => {
  const path = req.url; // the variable that i need to pass to lessons.js router

// ignore next three lines
  const pathSeparate = req.url.split('/');
  const LessonTopic = pathSeparate[1].toLowerCase()
  const LessonName = pathSeparate[2].match(/[A-Z][a-z]+/g).join('-').toLowerCase();

  res.locals.path = path;
  res.redirect(`/lessons/${LessonTopic}/${LessonName}`);
});

router.use('/:topic/:name', lessons);

module.exports = router;

lessons.js

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

router.get('/', (req, res) => {
  // i want to use variable path from lessonsRouter.js here

});
module.exports = router;

1 个答案:

答案 0 :(得分:1)

我认为您的依赖/导入方向错误。 lessons 应从 lessonsRouter 导入。但是,如果您真的想要这种方式,那么您可以导出一个函数,一旦拥有它,您就可以将路径传递给该函数。

lessonsRouter.js

const lessons = require('./lessons');

router.get('/*/([A-Z][a-z]+)/README.md', (req, res) => {
  const path = req.url; // the variable that i need to pass to lessons.js router
  lessons(path);
  ...
});

课程.js

module.exports = (path) => {
  router.get('/', (req, res) => {
    console.log(path);
  });
};