前言:
现在咱们对“编译出错一直没有定义”大约比较讲究,兄弟们都需要学习一些“编译出错一直没有定义”的相关文章。那么小编也在网上收集了一些有关“编译出错一直没有定义””的相关知识,希望我们能喜欢,同学们快快来学习一下吧!报错信息
当使用 TypeScript + TSlint + Babel 搭建开发环境时,在开发过程中偶尔会被 IDE 提示“无法重新声明块范围变量”,从而导致编译出错,报错图示如下:
解决方案
之所以 tslint 会提示这个错误,是因为在 Commonjs 规范中并没有像 ESModule 能形成闭包的“模块”概念,所有模块在引用时都默认被抛至全局,因此当再次声明某个模块时,TypeScript 会认为重复声明了两次相同的变量进而抛错。
对于这个问题,最简单的解决方法是在报错文件底部添加一行代码:export {}。这行代码会“欺骗”tslint ,使其认为当前文件是一个 ESModule 模块,因此不存在变量重复声明的可能性。当使用这个方法时,还要记得通过执行tsc --init命令生成配置文件 tsconfig.json ,并进行如下设置:
{ "include": ["src", "demo"], "compilerOptions": { "module": "commonjs", "noImplicitReturns": true, "noUnusedLocals": true, "esModuleInterop": true, // important! "target": "esnext", "strict": true, "outDir": "app", "declaration": true, "sourceMap": true }}
其中 esMoudleInterop 这个配置允许文件中出现 export 关键字。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #编译出错一直没有定义