Node.js 在module.exports之前需要在nodejs中使用动态命令

Node.js 在module.exports之前需要在nodejs中使用动态命令,node.js,Node.js,我有一个应用程序,我正在工作,有active directory登录和本地登录。检查权限时,我希望允许权限由AD组成员设置,或者如果不使用AD,则允许在数据库中本地存储权限。因此,我有两个不同的模块来处理权限检查。在module.exports之前,有没有一种方法可以让require位于顶部,通过if语句或类似的语句动态完成?我想我可以从那里分配process.env.isLocal和process,但它似乎不起作用。我收到一个错误,说权限未定义 const moment = require('

我有一个应用程序,我正在工作,有active directory登录和本地登录。检查权限时,我希望允许权限由AD组成员设置,或者如果不使用AD,则允许在数据库中本地存储权限。因此,我有两个不同的模块来处理权限检查。在module.exports之前,有没有一种方法可以让require位于顶部,通过if语句或类似的语句动态完成?我想我可以从那里分配process.env.isLocal和process,但它似乎不起作用。我收到一个错误,说权限未定义

const moment = require('moment');
const AdminPortal = require('../models/adminportal');
if(process.env.isLocal) {
    const Permissions = require('../models/localLogin/localPermissions');
} else {
    const Permissions = require('../models/permissions');
}
const isAuthenticated = require("../config/middleware/isAuthenticated");
const config = require("../config/configFile.js").get(process.env.NODE_ENV.trim());
module.exports = function(app){

我想也许我需要将两个代码集放在一个文件中,然后根据是否为本地登录选择要使用的代码集,我只是希望将它们分开。

您对
Permissions
变量的问题是,它是块范围的,因此它只在声明它的块内可用。那么这个,

if(process.env.isLocal) {
    const Permissions = require('../models/localLogin/localPermissions');
} else {
    const Permissions = require('../models/permissions');
}
创建仅在
if/else
块中可用的
Permissions
变量。如果希望它在更高的范围内可用,并使用相同的
If/else
构造,则必须在更高的范围内声明变量,这意味着不能使用
const

let Permissions;
if(process.env.isLocal) {
    Permissions = require('../models/localLogin/localPermissions');
} else {
    Permissions = require('../models/permissions');
}

// you can use Permissions here
仅供参考,这是一个三元运算符有用的地方:

const Permissions = process.env.isLocal ? 
     require('../models/localLogin/localPermissions') : 
     require('../models/permissions');

哈,这太明显了,我早该知道的。不幸的是,它似乎没有正确读取值,因为即使route console.logs为true,它也总是选择false。