无法使用节点内置/ TS重新声明块作用域变量

时间:2018-08-06 16:12:33

标签: typescript scoping

处理现有的打字稿项目。 VS代码。

在服务器目录中创建一个新文件,并获得唯一错误仅在该文件上

此:

let path = require('path')

给我ole:

Cannot redeclare block-scoped variable 'path'.

这没关系:

import * as path from "path"

很有趣,这个

let fs = require('fs')

本身也会产生相同的错误, 但是,如果我在上面加上了import * as path from "path",那么该错误就会消失而不会触碰它!内部节点模块的处理方式有所不同!

在同一项目中的许多其他文件中,

let fs = require('fs')

给出完全没有错误

打字稿怎么回事?

2.5年前,我遇到了类似的问题,而且TS仍然是配置BS的神秘盒子,现在VSC使它变得更加不透明。

cannot redeclare block scoped variable (typescript)

此文件正常!

enter image description here

但是在另一个文件中,完全相同的代码有一些小麻烦!

enter image description here

但是这种神奇的组合还可以:

enter image description here

1 个答案:

答案 0 :(得分:0)

请勿使用require,而应使用import

原因是require特定于node,其中其他import语句根据目标转换为requiredefine

因此,当通过import导入模块时,TS编译器知道如何导入以及如何导入。通过require方法导入时,所有内容均全局包含在打字稿中。因此是错误。