覆盖所需的依赖模块导出函数

Override required dependency module exported function

Node.js 项目使用通过 npm install 安装的 keycloak-nodejs-connect 依赖项。

依赖项 index.js 看起来像:

 ...
 var GrantManager = require('./middleware/auth-utils/grant-manager');
 ...
 function Keycloak (config, keycloakConfig) {         
     this.config = new Config(keycloakConfig);
     this.grantManager = new GrantManager(this.config);
 ...
 module.exports = Keycloak;

./middleware/auth-utils/grant-manager.js 看起来像:

...
const Token = require('./token');
....
module.exports = GrantManager;
...

./middleware/auth-utils/token.js 看起来像

...
Token.prototype.isExpired = function isExpired () {
  return ((this.content.exp * 1000) < Date.now());
};
... 
module.exports = Token;

项目源码使用Keycloak模块:

var Keycloak = require('keycloak-connect');

如何覆盖项目源码里面的function isExpired源码? 唯一让我想到的是在 node-modules...

中覆盖 token.js

其中一个解决方案可以是:

You fork 'keycloak-nodejs-connect' git repo made your changes and after in your package.json put your forked repository.

  1. Token 导入您的项目
  2. 覆盖 Token 原型上的 isExpired 方法
var Token = require('keycloak-connect/middleware/auth-utils/token')
Token.prototype.isExpired = {
  // your implementation
}