Как включить роутер в функцию и экспортировать его? - PullRequest
2 голосов
/ 28 апреля 2019

Я пытаюсь поместить router.post в функцию и экспортировать его в app.js. Но это не вступило в силу. Вот мой код.


crypto.js

function getPublicKey() {
    console.log('111');
    router.post('/get-public-key', (req, res) => {
        fs.readFile(__dirname + '/keys/rsa-pub.pem', 'utf8', (err, data) => {
            if (err) {
                throw err
            } else {
                res.send(data)
            }
        })
    });
}


module.exports = {
getPublicKey
}

app.js

const cryptoRouter = require('./modules/crypto/router');
cryptoRouter.getPublicKey();

На нем напечатано «111». Но я не могу POST / get-public-key. Как мне быть? Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Вы можете передать экземпляр app в вашу функцию и вернуть маршрут

function getPublicKey(app) {
  console.log('111');
  return app.post('/get-public-key', (req, res) => {
    fs.readFile(__dirname + '/keys/rsa-pub.pem', 'utf8', (err, data) => {
      if (err) {
        throw err
      } else {
        res.send(data)
      }
    })
  })
}

module.exports = {
  getPublicKey
}

Тогда в вашем app.js вы можете просто вызвать, передав экземпляр app:

const cryptoRouter = require('./modules/crypto/router');
cryptoRouter.getPublicKey(app);
0 голосов
/ 28 апреля 2019

Я думаю getPublicKey должен вернуть открытый ключ вместо

function getPublicKey() {
    fs.readFile(__dirname + '/keys/rsa-pub.pem', 'utf8', (err, data) => {
        if (err) {
            throw err
        }
        return data
    })
}

Затем в app.js

app.post('/get-public-key', (req, res) => {
    res.send(getPublicKey)
})

Редактировать

Если вы хотите использовать router, вы должны сделать так:

// ./routes/somewhere.js
const router = require('express').Router()

router.post('/something', (req, res) => {
    res.send('You made it!')
})

module.exports = router

Тогда

// ./app.js
app.use('/somewhere', require('./routes/somewhere'))

Наконец, вы можете отправить запрос на /somewhere/something.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...