Express + TS :解决 TypeScript 报错:“无法重新声明块范围变量”的问题

问题描述

使用 Express + TS 开发项目,在两个不同的文件引入相同的依赖红色波浪线

虽然程序可正常运行



 其他问题

  • 无法重新声明块范围变量
  • 函数实现重复
  • 标识符重复

 问题原因

项目中使用 CommonJS 规范,进行模块间的导入导出操作

因为在 CommonJS 规范里,没有像 ESModule 能形成闭包的「模块」概念,所有的模块在引用时都默认被抛至全局,因此当再次声明某个模块时,TypeScript 会认为重复声明了两次相同的变量进而抛错。


解决方法

方法一

解决方法是在报错的文件底部添加一行代码  export {}



 这行代码会 使其认为当前文件是一个 ESModule 模块,因此不存在变量重复声明的可能性

 当使用这个方法时,记得这样配置你的 tsconfig.json 文件:加上一行代码  

"esModuleInterop": true  这个配置允许文件中出现 export 关键字。

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "rootDir": "./src",
    "outDir": "./build",
    "strict": true
  }
}

 方法二

进行 TS 初始化,在项目的路径下, 打开终端运行以下命令, 进行 TS 初始化,生成  tsconfig.json 文件

tsc --init

文章如有错误,恳请大家提出问题,本人不胜感激 。 不懂的地方可以评论,我都会 一 一 回复

文章对大家有帮助的话,希望大家能动手点赞鼓励,大家未来一起努力 长路漫漫,道阻且长

猜你喜欢

转载自blog.csdn.net/qq_52855464/article/details/130300509