Node.js 如何使路由器发挥作用并将其导出?

Node.js 如何使路由器发挥作用并将其导出?,node.js,express,Node.js,Express,我尝试将router.post放入函数中并将其导出到app.js。但它没有起作用。这是我的密码 crypto.js 函数getPublicKey(){ 控制台日志('111'); router.post('/get public key',(req,res)=>{ fs.readFile(uu dirname+'/keys/rsa pub.pem','utf8',(err,data)=>{ 如果(错误){ 失误 }否则{ res.send(数据) } }) }); } module.expo

我尝试将router.post放入函数中并将其导出到app.js。但它没有起作用。这是我的密码


crypto.js

函数getPublicKey(){ 控制台日志('111'); router.post('/get public key',(req,res)=>{ fs.readFile(uu dirname+'/keys/rsa pub.pem','utf8',(err,data)=>{ 如果(错误){ 失误 }否则{ res.send(数据) } }) }); } module.exports={ 获取公钥
}我认为
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)
})
编辑 如果您想使用
路由器
,您应该这样做:

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

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

module.exports = router
然后


最后,您可以向
/somewhere/something

发出post请求。您可以将
应用程序的实例传递给您的函数并返回路由

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);

如果需要,则必须导出函数,如
module.exports=getPublicKey
@EddeAlmeida对不起。我已经编写了此代码。但只是忘记了编写。但它是错误的。请不要使用括号,就像我在上一篇评论中所写的那样。@EddeAlmeida感谢您的帮助。我使用了您的代码。但它仍然打印“111”,并且路由器不工作。您不能发布,因为您代码中的这个
路由器
不知从何而来。在代码的其余部分,它不是同一个路由器。请记住,在不同的模块中,同一个词可能代表完全不同的事物。你的控制台中没有收到关于此的警告吗?谢谢你的帮助。我在app.js中导出路由器和注册路由器。它工作正常。但我想控制路由器并决定是否使用它。因此我将路由器放入一个函数中。它说“谢谢你的反馈!声誉低于15%的人所投的票会被记录下来,但不会改变公开显示的帖子分数。“我会在投票后标记接受。”。
const cryptoRouter = require('./modules/crypto/router');
cryptoRouter.getPublicKey(app);