首页/ 学科题库/ npm/ 模块解析机制专题
npm 专题精讲

模块解析机制专题

1 篇文章 15 道配套习题

模块解析机制专题

专题说明

本专题深入解析Node.js模块解析机制,包括node_modules逐级查找规则、exports条件导出配置、多环境入口字段区分以及TypeScript类型定义支持。

学习目标

  1. 理解require的解析路径与node_modules逐级查找机制
  2. 掌握package.json exports字段的条件导出配置
  3. 能区分main/module/browser在不同环境下的入口选择
  4. 学会配置types字段支持TypeScript类型推断

学习内容

  • 模块查找规则:require解析路径、逐级查找
  • exports条件导出:条件导出配置、子路径导出
  • 入口字段:main/module/browser的区别与优先级
  • TypeScript支持:types字段、类型定义入口

学习建议

  1. 理解node_modules查找规则有助于调试模块加载问题
  2. exports字段是现代包开发的推荐做法,优于main
  3. 同时提供main和module入口以兼容CommonJS和ESM

配套习题(15 题)

参考答案在文末
判断题
1
判断题

package.json中的typings字段和types字段功能不同,typings用于旧版本TypeScript兼容。

A

对

B

错

2
判断题

当require('lodash')时,Node.js只会查找当前目录下的node_modules/lodash。

A

对

B

错

3
判断题

package.json中的module字段是Node.js官方定义的标准字段。

A

对

B

错

单选题
4
单选题

当require('./utils')时,Node.js的查找顺序是什么?

A

./utils → ./utils.js → ./utils.json → ./utils/index.js

B

./utils.js → ./utils.json → ./utils → ./utils/index.js

C

./utils → ./utils.js → ./utils/index.js → ./utils.json

D

./utils.js → ./utils → ./utils.json → ./utils/index.js

5
单选题

在package.json中配置了以下exports字段:

JSON
{
  "exports": {
    ".": {
      "import": "./dist/esm/index.js",
      "require": "./dist/cjs/index.js",
      "default": "./dist/index.js"
    }
  }
}

当使用import语法引入该包时,实际加载的是哪个文件?

A

./dist/esm/index.js

B

./dist/cjs/index.js

C

./dist/index.js

D

由main字段决定

6
单选题

当package.json同时存在main、module和browser字段时,webpack的默认解析优先级是什么?

A

main > module > browser

B

browser > module > main

C

module > browser > main

D

main > browser > module

7
单选题

当package.json同时存在exports字段的"types"条件和顶层types字段时,TypeScript优先使用哪个?

A

优先使用顶层types字段

B

优先使用exports中的"types"条件

C

两者合并使用

D

报错提示配置冲突

多选题
8
多选题

关于Node.js模块查找规则,以下说法正确的是哪些?

A

核心模块(如fs、path)优先级最高,不会被同名npm包覆盖

B

require会逐级向上查找node_modules目录直到根目录

C

NODE_PATH环境变量指定的目录也会被搜索

D

require的缓存机制意味着同一模块只会被加载一次

E

绝对路径导入时,Node.js会将其转换为相对路径再查找

9
多选题

关于package.json中的exports字段,以下说法正确的是哪些?

A

定义exports后,未在exports中声明的子路径无法被外部导入

B

exports支持"types"条件用于TypeScript类型解析

C

exports中的条件匹配顺序是从上到下,第一个匹配的条件生效

D

exports和main字段可以同时存在且互不干扰

E

exports只能定义包的主入口,不能定义子路径导出

10
多选题

关于TypeScript的类型定义解析,以下说法正确的是哪些?

A

types字段指定的文件必须是.d.ts格式

B

如果没有types字段,TypeScript会在包根目录查找index.d.ts

C

exports中的"types"条件必须写在其他条件之前

D

可以在exports中为不同子路径指定不同的类型定义文件

E

类型定义文件不影响运行时代码的执行

11
多选题

关于package.json中的入口字段,以下说法正确的是哪些?

A

main字段是Node.js官方标准,用于指定CommonJS入口

B

module字段是社区约定,用于指定ES模块入口

C

browser字段用于指定浏览器环境下的入口或模块替换

D

Node.js原生支持module字段的解析

E

exports字段优先级高于main字段

填空题
12
填空题

Node.js在解析require('foo')时,会从当前文件的目录开始,逐级向上查找目录中的foo包,直到目录为止。

13
填空题

在package.json中,字段指定CommonJS入口,字段指定ES模块入口(社区约定),字段指定浏览器环境入口。

14
填空题

当package.json中定义了exports字段后,未在exports中声明的子路径将无法被外部。这种特性称为exports的性。

15
填空题

TypeScript解析包的类型定义时,优先级从高到低为:exports中的条件 > 顶层字段 > 包根目录的文件。

参考答案
1.错误 2.错误 3.错误 4.A 5.A 6.B 7.B 8.A;B;C;D 9.A;B;C 10.A;B;D;E 11.A;B;C;E 12.node_modules;根 13.main;module;browser 14.导入/引入/require/import;封装 15.types;types;index.d.ts
想在手机上刷这套专题的真题?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可解锁本专题全部配套练习与错题本。
了解产品 App
← 上一个专题 性能优化与缓存策略专题 下一个专题 → 版本号规则与发布基础专题