【esModuleInterop】模块没有默认导出但编辑器不报错?

55 阅读1分钟

背景

在使用mongodb时,我在vscode中写了这样的代码:

import mongo from 'mongodb';

const client = new mongo.MongoClient("mongodb://127.0.0.1:27017")

运行会报错:mongo为undefined了

当然正确的做法应该是:

import {MongoClient} from 'mongodb';

因为 mongodb 中没有default导出。那为什么编辑器不给我报错呢?甚至还有 mongo.MongoClient 这种代码提示,出现了编写与运行不一致的情况,让人很没有安全感。

后面发现是 tsconfig.jsonesModuleInterop 字段的影响,改为false就正常了:编辑器就会提示 mongodb没有默认导出

esModuleInterop

todo