如何从导入的模块调用函数?
通常,我会做类似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;
答案 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