当前位置: 首页 > 知识库问答 >
问题:

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

通安宁
2024-09-02

请问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的引入?

共有1个答案

施自珍
2024-09-02

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'
 类似资料:
  • nodejs有一个ambient module的术语: 我用词典翻译为环境模块,请问这个是指的什么意思呢? 举例这些ambient modules: 请问,这些是指的是nodejs可以直接使用的内置+三方的nodejs库吗?

  • 问题内容: 对于一个项目,我们有一堆始终具有相同结构且未链接在一起的数据。有两种保存数据的方法: 为每个池创建一个新的数据库(约15-25个表) 在一个数据库中创建所有表,并根据表名称更改池。 对于MySQL来说,哪一个更容易和更快地处理? 编辑: 我对数据库设计没有兴趣,只是对两种可能性中的哪一种更快感到兴趣。 编辑2: 我将尝试使其更加清晰。如前所述,我们将获得数据,其中一些日期很少会属于不同

  • 我在Unity中有项目,使用Mapbox, Mapbox包含以下支持库:support-v4-25.1.0.aar 此库以.aar文件的形式提供,而不是作为gradle命令 尝试构建项目时,我收到此错误: 无法确定任务的依赖项:启动程序:lintVitalRelease。< br >无法解析配置的所有项目:launcher:debuguntimeclass path。< br >无法转换支持-v4

  • 请问,.vue 文件中,是否可以引入nodejs库进行使用?

  • 我想用com。Android支持:设计:22.2.0在我的Android Studio(1.3)项目中,但当我添加'com'时。Android支持:设计:22.2.0'到依赖{}我有103个错误,我无法摆脱这个错误。 如果我尝试使用新版本的appcompat,也会发生同样的情况。现在我有了“com”。Android支持:appcompat-v7:19。“以我的身材。格雷德尔。 有人知道吗? 我的错

  • 我对Android Studio3.0金丝雀有一个问题。在所有项目中,我不能使用预览工具中的支持库中的任何视图。显示呈现错误。在新项目中也是同样的问题。 Samople代码: 格雷德尔:

  • 1. 前言 动态 SQL 是 MyBatis 最标志性的特性之一。在其它框架中,你可能需要根据不同的条件来拼接 SQL,辗转在符号与条件的判断上,处理起来麻烦而且易错,而 MyBatis 的动态 SQL 可以让我们摆脱这种痛苦,简单而又高效的书写 SQL。 MyBatis 动态 SQL 由 OGNL 表达式和条件标签两部 分组成,我们将会分为多个小节进行介绍。 OGNL 表达式是动态 SQL 的基

  • 我有两个独立的项目。一个用于前端reactJs,另一个用于后端NodeJs,我使用mySQL数据库来获取数据。我的主要问题是,我不能在互联网上主持这个网站。 我尝试使用firebase托管,并能够托管前端reactJs项目。我仍然有NodeJs和MySql数据库,需要托管,以便网站发挥作用。另外,我需要在连接文件中对DB做什么更改,从前端api触发是使用axios(“http://localhos