javascript - 使用 require 问题设置循环依赖

标签 javascript ecmascript-5

循环依赖是在 Jest.js 中模拟父函数内部子函数的一种方式。我看过关于如何使用循环导入的 ES6 示例,但我无法使用 require 将其转换为 ES5 语法。这是我拥有的:

const currentFile = require('./targetFile.js');

const a = () => {
  return currentFile.b();
};

const b = () => {
  return 'from b'
};

module.exports = { a, b }

然后我尝试在需要上述作为 targetFile 的测试文件中运行上述代码:

const targetFile = require("../targetFile.js");

test('a and b', () => {
  console.log(targetFile.a(), `=====targetFile.a()=====`);
});


 FAIL  views/admin/__tests__/targetFile.test.js
  ✕ a and b (12ms)

  ● a and b

    TypeError: currentFile.b is not a function

      26 | 
      27 | const a = () => {
    > 28 |   return currentFile.b();
         |                      ^
      29 | };
      30 | 
      31 | const b = () => {

以上使用 requires(或其他 ES5 浏览器兼容语法)的正确语法是什么?

最佳答案

出于技术原因,module.exports = {} 语法不适用于循环依赖项。幸运的是,您可以使用 exports.a = a 语法,并像 const target = require('target');.... target.a(); 一样使用它

总的来说,循环导入带来的麻烦多于好处,所以我建议避免使用它们。我也不明白为什么您需要循环导入进行测试,并且您的示例也没有显示。您能否发布有关文件的更多详细信息?

关于javascript - 使用 require 问题设置循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413738/

相关文章:

javascript - 表格顶部和底部的水平滚动条

javascript - ECMAScript 6 全局范围内的 `this`

javascript - 在 json 对象数组上添加唯一生成的标识符

javascript - 如何更改 NodeJS、Express、Passport 中输入字段的名称属性?

javascript - 如何在 React 中制作动态模态?

javascript - 导航回调 native react

javascript - 输出JSON的javascript中的递归函数

javascript - 为什么 JavaScript 中的逻辑运算符是左结合的?

javascript - AngularJS 在模板上验证

javascript - 数组递归起点终点