Node.js 如何使路由器发挥作用并将其导出?
我尝试将router.post放入函数中并将其导出到app.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
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);