通过导入模块中的字符串调用函数

时间:2019-12-03 11:45:02

标签: node.js ecmascript-6

如何从导入的模块调用函数?

通常,我会做类似global[method](args)的操作,但是导入的模块包装在匿名作用域中,无法通过global进行访问。

我将ES6与Node.js(v10.16.0),Nodemon(v2.0.1)和Babel结合使用。

import myFunction from './methods/myFunction';
const method = 'myFunction';
console.log(method in global); //false
console.log(global[method]); //undefined

myFunction.js:

const myFunction=()=> { console.log('x') };
export default myFunction;

2 个答案:

答案 0 :(得分:1)

拥有一个您自己定义的映射对象并像尝试使用'global'一样使用它会起作用吗?

例如

const functionMapper = {
  myFunction: myFunction,
  someOtherFunction: someOtherFunction,
};

functionMapper['myFunction'];

答案 1 :(得分:1)

Nodejs在意义上不是浏览器,如果您定义函数,它将添加到window / global。要在全局中定义,您需要在全局中添加。

如果您真的想在全局中添加。试试这个。

//myFunction.js:
let global = global || window
global["myFunction"] = ()=> { console.log('x') };

// Now access:
import './methods/myFunction';
const method = 'myFunction';
console.log(method in global); //false
console.log(global[method]); //undefined