2

嗨,我正在尝试编写一个 codemod,它将我的 require 语句从文件顶部移动到类构造函数内部。

const moduleA = require('moduleA');
const moduleB = require('../moduleB');

class Example {
  constructor(context) {
    this.lazy(
      "moduleA",
      () => new moduleA(context)
    );
    this.lazy(
      "moduleB",
      () => new moduleB(context)
    );
  }
  
  lazy() {
  
  }

  async callThis() {
     this.moduleA.callThatMethod();
  }
}

module.exports = Example;

文件顶部的这些 require 语句需要很长时间,仅当该 API 至少调用一次时才使用。因此,无论如何,Node.js 都会在进程级别缓存 require 。我试图require在箭头函数内移动语句。

像下面

class Example {
  constructor(context) {
    super(context);
    this.lazy("moduleA", () => { 
       const moduleA = require('moduleA');
       return new moduleA() 
    }
    this.lazy("moduleB", () => {
      const moduleB = require('../moduleB');
      return new moduleB() 
    }
  }

  async callThis() {
     this.moduleA.callThatMethod();
  }
}

我在实现这一点时遇到了麻烦,因为我不知道如何选择定义的“惰性”函数,然后移动顶部需求。

非常感谢任何帮助谢谢

4

0 回答 0