本文共 455 字,大约阅读时间需要 1 分钟。
出现这个错误的原因是:
fs模块没有默认导出
。事实上,fs模块的确没有默认导出
。因为fs是遵循cjs规范写的。即类似于这种导出:
module.exports = fs = { readFile, readFileSync, ...}
而如果直接使用
import fs from 'fs'
就会导致出现标题中的错误(TS编译情况下)。
固导包的时候需要使用如下的方法:
import * as fs from 'fs'
看起来有些麻烦,事实上,如果尝试使用babel进行编译(不是tsc),就不会出现这个问题。因为babel会特殊处理这种情况。其实typescriot可以实现和babel一样效果。但默认typescript可能未开启的这个功能的。此时只需要设置开启即可
{ "compilerOptions": { "esModuleInterop": true }}
值得注意的,开启之后会改变默认导包的方式,项目中所有的默认导入都会受到影响。
更多深入理解和源码解读,可以参考
转载地址:http://lajo.baihongyu.com/