node.js - 如何动态调用导入的命名空间?
问题描述
我有 2 个导出文件,它们都导出同名的函数。
我可以区分这 2 个,因为它们会被分配到不同的命名空间。但我想动态调用命名空间而不将名称硬编码到代码中。
//exporter1.js
function boo(params)
{
return 0;
}
module.exports.boo = boo;
//exporter2.js
function boo(params)
{
return 1;
}
module.exports.boo = boo;
//mainarea.js
var exp1 = require('./exporter1.js');
var exp2 = require('./exporter2.js');
var ns = "exp1";
global[ns].boo(params); //This doesn't work
解决方案
导入的模块不存储在global
变量中。所以你不能用global
. 你可以做类似的事情
//mainarea.js
var exp1 = require('./exporter1.js');
var exp2 = require('./exporter2.js');
var supportedModules = {
'exp1': exp1,
'exp2': exp2,
}
var ns = "exp1";
supportedModules[ns].boo(params);
推荐阅读
- reactjs - 将 Draft JS 实现到 Next JS 中,文本编辑器不会显示
- angular - TypeError:修补值时无法读取未定义的属性“id”
- c++ - 处理对象组的设计模式
- flutter - 在长条上添加 Flutter AlertDialog?
- javascript - 根据用户国家/地区重定向页面(Javascript)
- python - Python Pandas 绘图警告
- geoserver - 如何使用 NDVI 索引在 Geoserver 上实现渲染转换?
- c# - 数据绑定的 WPF 组合框错误
- java - Android - 如何使用 SSID 和密码连接 Wi-Fi
- c# - ActiveMQ NMS SSL:从远程机器运行应用程序