nodejs还有很多内置库和三方库,我们如何进行确认是否支持cjs和esm的引入?

请问nodejs的内置库,在使用的时候,是否即支持CJS引入,也支持ESM引入呢?

我在typescript项目中,发现nodejs的内置库:path/fs
一般应该是require引入,但是发现可以import引入,并打印(有数据):

import * as Path from "path";
import * as Fs from  'fs';

//console.log(Path)

console.log(Fs)  // 打印有数据

打印有引入的对象数据:

...
  opendirSync: [Getter],
  F_OK: [Getter],
  R_OK: [Getter],
  W_OK: [Getter],
  X_OK: [Getter],
  constants: [Getter],
  promises: [Getter]
}

1、path和fs都是支持cjs和esm引入吗?但是在VSCode显示的时候,为何会报错找不到模块:
QQ_1725271359747.png

2、因为nodejs还有很多内置库和三方库,我们如何进行确认是否支持cjs和esm的引入?

阅读 1k
1 个回答

ts 不是运行时,你的运行时依然是node,目前只支持 cjs。

所以

  1. ts支持使用 import 导入 node 内置模块,编译后会自动转成 require 导入。
  2. vscode 报错是找不到 node 内置库类型文件,需要安装 @types/node 依赖
  3. 写 ts 可以全部使用 import ,ts 会帮你处理。
    3.1. 如果第三方库不支持 esm 导入,可以写 import * as A from 'a-lib'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题