簡體   English   中英

如何導出 function 並將其用作中間件 node.js

[英]how to export function and use it as middleware node.js

在我的middleware文件夾中,我有一個名為auth.js的文件。

在這個文件中,我有這個 function:

function authCheck () {
      if (req.session.loggedin) {

          return;

      } else {

          req.session.destory();
          res.redirect('/login')

     }

}

我需要導出它,然后在我的其他文件中使用它,所以我需要將它導入到我的根目錄app.js文件和我的routes文件夾中,那里的那些js文件。

我基本上想這樣做:

app.get('/index', authCheck, (req, res) => {

 .....
}

我該怎么做呢?

您使用app.use假設您正在使用 expressjs 並使用next()繼續執行

auth.js

function authCheck (req, res, next) {
      if (req.session.loggedin) {

          next();

      } else {

          req.session.destory();
          res.redirect('/login')

     }

}
module.exports = { authCheck }

應用程序.js

const {authCheck} = require('./auth.js');

app.use(authCheck)
app.get('/index', (req, res) => {

 .....
}

節點模塊是您正在尋找的。

這是 nodejs 文檔中的一個示例。

從 addTwo.mjs 導出addTwo.mjs

// addTwo.mjs
function addTwo(num) {
  return num + 2;
}

export { addTwo };

在app.mjs中導入並使用導出的app.mjs

// app.mjs
import { addTwo } from './addTwo.mjs';

// Prints: 6
console.log(addTwo(4));

請注意,文件擴展名.mjs用於指定您正在使用 es6 模塊。 在這里閱讀更多。

https://nodejs.org/api/esm.html#esm_introduction

您可以在其中創建一個類似 auth.js 文件的中間件,並在其中添加身份驗證代碼,如下所示:

module.exports = {
    authCheck: (req, res, next) => {
   }
}

並將該文件導入您的路由文件夾並使用它,如下所示:

const auth = require('../middlewares/auth')

router.post("/", auth.authCheck, (req, res, next) => {
      
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM