如何启用路由器功能并将其导出?

时间:2019-04-28 01:33:33

标签: node.js express

我尝试将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'。但是我不能开机自检/ get-public-key。 我该怎么办?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为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发出发帖请求。

答案 1 :(得分:0)

您可以将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);