【问题标题】:typescript replaceent for require inside a function in nodejs打字稿替换节点js中函数内的require
【发布时间】:2018-12-29 21:20:51
【问题描述】:

我尝试将 nodejs 项目转换为 TypeScript,虽然在此过程中我大部分时间并没有遇到真正困难的障碍,但代码库几乎没有这样的陷阱,主要是在启动代码中:

    function prepareConfiguration() {
       let cloudConfigLoader = require('../utils/cloud-config');
       return cloudConfigLoader.ensureForFreshConfig().then(function() {
           //do some stuff
       });
    }

我可能只需要一个建议,说明哪种重构方法需要较少的代码更改才能使其以 TypeScript 方式工作。

针对cmets,更多细节: 这需要加载节点模块,而不是 JSON 文件。从该模块中, ensureForFreshConfig 函数与云服务联系以加载值列表以重建配置状态对象。 问题是 mdule 是在“模块是 issgleton 对象”的标准节点方法中制作的,它的独立性包括 auth 组件,只有在进行所示的 require 调用时才会准备好。我知道这不是最好的方法.. Typesript 不允许“稍后导入该模块”,除非使用 dynamyc 导入,如评论中所述,这是有问题的。 “好”的方法是重构启动的那一部分,并使 ensureForFreshConfig 及其依赖项通过 cnstructors 按需启动其 ntenras。我只是希望有一些解决方案来减少在过渡到 TypeScript 期间需要重新制作的东西

【问题讨论】:

  • 这个特定的require() 在做什么?它只是加载和解析一些 JSON,还是加载需要运行的实际代码模块?
  • 您可以在此处阅读关于 Typescript 中的动态导入:blog.mariusschulz.com/2018/01/14/… Node 可能在导入语句方面仍有一些问题。

标签: node.js typescript require


【解决方案1】:
import { cloudConfigLoader } from '../utils/cloud-config'

async function prepareConfiguration() {
  await cloudConfigLoader.ensureForFreshConfig()

  // do some stuff
  // return some-stuff
}

函数使用如下。

await prepareConfiguration()

【讨论】:

  • 稍后我会尝试这个建议,届时将返回我正在处理的项目的 TypeScripting 任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 2021-12-05
  • 2019-08-17
  • 2018-04-10
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
相关资源
最近更新 更多