无法重新声明块范围变量“addToArray”。?

作者站长头像
站长
· 阅读数 11

我有1个文件,对它添加了一个测试文件:

test06.ts
test06.spec.ts

test06.ts

function addToArray(arr, ...args) {
  arr.push(...args)
}

module.exports = addToArray 

当我在test06.spec.ts中引用此函数的时候报错:无法重新声明块范围变量“addToArray”。?

回复
1个回答
avatar
test
2024-07-04

TS 里用 CommonJS 有很多坑,既然你都已经用 TS 了,不如直接上 ESM 就好。


如果你非要不信邪的话,就是想用 CommonJS,那倒是也有解。

方案一

要么你在 tsconfig.json 里配置上:

{
    "compilerOptions": {
        "esModuleInterop": true // 这里要设置为 true,其他配置项略
    }
}

同时在导出的模块结尾加一句:

export {};

方案二

要么就用 TS 专门为适配 CommonJS 设计出来的语法:

// 导出时 module.exports = addToArray; 改成
export = addToArray;

// 导入时 let addToArray = require('./test06'); 改成
import addToArray = require('./test06');

P.S. 方案一其实还有另一个隐形的坑,先不展开了。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容