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

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

test06.ts
test06.spec.ts

test06.ts

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

module.exports = addToArray 

当我在test06.spec.ts中引用此函数的时候报错:
image.png

阅读 2.2k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题