无法重新声明块范围变量“addToArray”。?
我有1个文件,对它添加了一个测试文件:
test06.ts
test06.spec.ts
test06.ts
function addToArray(arr, ...args) {
arr.push(...args)
}
module.exports = addToArray
当我在test06.spec.ts中引用此函数的时候报错:
回复
1个回答

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. 方案一其实还有另一个隐形的坑,先不展开了。
回复

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