【问题标题】:separate modules.exports functions cannot call each other单独的 modules.exports 函数不能相互调用
【发布时间】:2018-11-23 17:26:27
【问题描述】:

我创建了两个 modules.export 函数,在某些情况下它们需要彼此。

例如:

// a.js
modules.exports = function(){ b(); }

// b.js
modules.exports = function(){ console.log('b'); }

// main.js
let a = require('a.js');
let b = require('b.js');

a();

如上,它会抛出一个错误,说 'b()' 不存在。在常规 JS 中,您可以定义调用其他函数的函数,只要定义在相同或更高的范围内,所以我不确定为什么 modules.exports 不会发生这种行为。

我真的不想在 a.js 中要求 b(),因为这会在我的项目中产生大量开销。

编辑

不幸的是,将模块添加到全局范围不是一种选择。

【问题讨论】:

  • 可以使用global,但还是建议手动要求它。开销是使文件对其他文件的依赖显式的权衡。在“常规 JS”(我猜你的意思是浏览器 JS)中,依赖全局变量会导致模棱两可的问题(例如,这个函数到底是从哪里来的?)并且可能会出现名称冲突。
  • 您在a.js 中缺少const b = require('./b.js')

标签: node.js require node-modules


【解决方案1】:

这是你的答案朋友:

//a.js
const b = require('./b.js')
modules.exports = function(){ b(); }

//b.js
modules.exports = function(){ console.log('b'); }


// main.js
let a = require('a.js');
let b = require('b.js');

a();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2016-11-24
    • 2017-02-15
    • 2015-03-08
    • 2013-01-25
    • 1970-01-01
    相关资源
    最近更新 更多