如何在运行期程序化地获取当前 Node.js 版本的内置模块清单?
如何在运行期程序化地获取当前 Node.js 版本的内置模块清单? 本文先给出可直接复述的结论,再用最小代码说明module.builtinModules isBuiltin 内置模块列表的工作方式、判断依据、项目边界和常见误区。
模块与工具链专题面试题第 1 页,显示第 1–45 题,共找到 45 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
如何在运行期程序化地获取当前 Node.js 版本的内置模块清单? 本文先给出可直接复述的结论,再用最小代码说明module.builtinModules isBuiltin 内置模块列表的工作方式、判断依据、项目边界和常见误区。
用三个独立 CommonJS 文件复现循环依赖中的初始化顺序,区分复制属性值与保留导出对象引用,解释 module.exports 重新赋值的风险,并给出拆分依赖和显式初始化的改法。
CommonJS 模块里的 exports、require、module 等变量是从哪来的? 本文先给出可直接复述的结论,再用最小代码说明Node.js CommonJS module wrapper 函数包装的工作方式、判断依据、项目边界和常见误区。
区分 require ESM 的引入版本、默认启用和警告变化,解释同步模块图、间接顶层 await、返回命名空间与动态 import 的边界,避免只按 Node 大版本判断兼容性。
沿文件扩展名、最近 package.json 和歧义输入语法检测定位 Node.js 模块格式,给出嵌套包作用域示例,说明动态 import、构建工具和命令行输入的区别。
exports 中 require、import、node、default 等条件的匹配顺序如何决定? 本文先给出可直接复述的结论,再用最小代码说明条件导出 conditional exports 匹配顺序 node default的工作方式、判断依据、项目边界和常见误区。
Corepack 如何在团队内统一锁定 yarn/pnpm 的版本? 本文先给出可直接复述的结论,再用最小代码说明Corepack packageManager 字段 锁定包管理器的工作方式、判断依据、项目边界和常见误区。
在 ESM 文件里如何拿到可用的 require 函数以加载 CJS 资源? 本文先给出可直接复述的结论,再用最小代码说明module.createRequire ESM 使用 require的工作方式、判断依据、项目边界和常见误区。
dependencies 与 devDependencies 的划分在库和应用两种场景下判断标准有何不同? 本文先给出可直接复述的结论,再用最小代码说明dependencies devDependencies 区别 判断标准的工作方式、判断依据、项目边界和常见误区。
为什么 Node.js 废弃了 exports 里的 './features/*' 目录映射式写法? 本文先给出可直接复述的结论,再用最小代码说明package exports 目录映射 deprecated folder mapping的工作方式、判断依据、项目边界和常见误区。
同时发布 CJS 与 ESM 双格式的包为什么会导致 instanceof 判断失效? 本文先给出可直接复述的结论,再用最小代码说明dual package hazard 双包危害 instanceof的工作方式、判断依据、项目边界和常见误区。
解释 Node.js 如何为 CommonJS 合成命名导出,复现动态属性可默认导入却不能可靠命名导入的情况,区分静态检测、属性读取和 ESM 实时绑定,并讨论包升级与转译差异。
ESM 导出的值在导入方为什么能感知后续变化,与 CJS 有何本质不同? 本文先给出可直接复述的结论,再用最小代码说明ESM live bindings 只读绑定 CommonJS 拷贝的工作方式、判断依据、项目边界和常见误区。
Node.js 的 module customization hooks(resolve/load)能解决什么 CJS 做不到的问题? 本文先给出可直接复述的结论,再用最小代码说明Node.js loader hooks register resolve load 自定义加载的工作方式、判断依据、项目边界和常见误区。
ESM 中没有 __dirname 和 __filename,如何等价获取当前模块路径? 本文先给出可直接复述的结论,再用最小代码说明ESM __dirname import.meta.url fileURLToPath的工作方式、判断依据、项目边界和常见误区。
为什么 ESM 中相对路径 import 必须写全扩展名而 CJS 可以省略? 本文先给出可直接复述的结论,再用最小代码说明ESM specifier 扩展名 mandatory file extension的工作方式、判断依据、项目边界和常见误区。
Node.js 中 import assertions 与 import attributes 的语法演进要点是什么? 本文先给出可直接复述的结论,再用最小代码说明import assert with 语法变更 Node.js的工作方式、判断依据、项目边界和常见误区。
在 Node.js ESM 中如何正确 import 一个 JSON 文件? 本文先给出可直接复述的结论,再用最小代码说明Node.js import JSON import attributes with type json的工作方式、判断依据、项目边界和常见误区。
import.meta.resolve 在 Node.js 中解决什么实际问题? 本文先给出可直接复述的结论,再用最小代码说明import.meta.resolve Node.js 模块解析路径的工作方式、判断依据、项目边界和常见误区。
依赖包的 preinstall/postinstall 脚本为何是供应链攻击的常见入口,如何缓解? 本文先给出可直接复述的结论,再用最小代码说明npm install scripts 供应链攻击 --ignore-scripts的工作方式、判断依据、项目边界和常见误区。
package-lock.json 在可复现安装中起什么作用,为什么必须提交到仓库? 本文先给出可直接复述的结论,再用最小代码说明package-lock.json 作用 锁定版本 可复现安装的工作方式、判断依据、项目边界和常见误区。
CommonJS 中 module.exports 与 exports 赋值有什么区别,为什么会踩坑? 本文先给出可直接复述的结论,再用最小代码说明module.exports exports 区别 引用关系的工作方式、判断依据、项目边界和常见误区。
require('lodash') 这类裸说明符在 Node.js 中的完整查找路径是什么? 本文先给出可直接复述的结论,再用最小代码说明Node.js require 模块解析 node_modules 查找顺序的工作方式、判断依据、项目边界和常见误区。
在 exports 中如何用嵌套条件表达「浏览器下用 ESM、Node 下用 CJS」这类组合? 本文先给出可直接复述的结论,再用最小代码说明package.json nested conditions exports 嵌套条件的工作方式、判断依据、项目边界和常见误区。
import 'fs' 与 import 'node:fs' 在 Node.js 中有实际区别吗? 本文先给出可直接复述的结论,再用最小代码说明node: prefix 核心模块 区别的工作方式、判断依据、项目边界和常见误区。
npm audit 报告的漏洞应如何分级处置,audit fix --force 有什么风险? 本文先给出可直接复述的结论,再用最小代码说明npm audit 漏洞修复 force 风险的工作方式、判断依据、项目边界和常见误区。
CI 流水线中为什么应该用 npm ci 而不是 npm install? 本文先给出可直接复述的结论,再用最小代码说明npm ci 与 npm install 区别 CI的工作方式、判断依据、项目边界和常见误区。
node_modules 中为什么会出现同一包的多份副本,npm dedupe 如何减少重复? 本文先给出可直接复述的结论,再用最小代码说明npm dedupe 依赖提升 重复包的工作方式、判断依据、项目边界和常见误区。
publish 前如何用 npm pack 与 files 字段控制实际发布的包内容? 本文先给出可直接复述的结论,再用最小代码说明npm pack files 字段 发布内容 检查的工作方式、判断依据、项目边界和常见误区。
npx 执行未安装包时的查找顺序是什么,为什么它可能被滥用? 本文先给出可直接复述的结论,再用最小代码说明npx 执行顺序 远程包 风险的工作方式、判断依据、项目边界和常见误区。
optionalDependencies 安装失败时 npm 的行为与 dependencies 有何不同? 本文先给出可直接复述的结论,再用最小代码说明optionalDependencies 安装失败 跳过的工作方式、判断依据、项目边界和常见误区。
package.json 的 overrides 字段如何强制替换间接依赖的版本? 本文先给出可直接复述的结论,再用最小代码说明npm overrides 覆盖间接依赖 版本的工作方式、判断依据、项目边界和常见误区。
package.json 的 exports 字段相比 main 多解决了什么问题? 本文先给出可直接复述的结论,再用最小代码说明package.json exports 字段 封装 子路径的工作方式、判断依据、项目边界和常见误区。
exports 写成字符串和写成对象分别表示什么语义? 本文先给出可直接复述的结论,再用最小代码说明exports sugar 字符串简写 主入口的工作方式、判断依据、项目边界和常见误区。
lockfile 中的 integrity 字段如何在安装时防止依赖被篡改? 本文先给出可直接复述的结论,再用最小代码说明package-lock integrity SRI sha512 校验的工作方式、判断依据、项目边界和常见误区。
package.json 的 main 字段在模块解析中扮演什么角色,缺省时如何回退? 本文先给出可直接复述的结论,再用最小代码说明package.json main 字段 入口 回退 index.js的工作方式、判断依据、项目边界和常见误区。
peerDependencies 在 npm 7+ 被自动安装后,插件包作者需要注意什么? 本文先给出可直接复述的结论,再用最小代码说明peerDependencies npm7 自动安装 冲突的工作方式、判断依据、项目边界和常见误区。
删除 require.cache 后重新 require 能否真正热更新模块,有什么残留风险? 本文先给出可直接复述的结论,再用最小代码说明Node.js require.cache 删除 热重载的工作方式、判断依据、项目边界和常见误区。
require.extensions 为什么被官方标记为废弃,替代做法是什么? 本文先给出可直接复述的结论,再用最小代码说明require.extensions deprecated 替代 loader的工作方式、判断依据、项目边界和常见误区。
一个包如何在自身代码里用包名引用自己的导出? 本文先给出可直接复述的结论,再用最小代码说明package.json self-reference name exports 自引用的工作方式、判断依据、项目边界和常见误区。
package.json 中 ^1.2.3 与 ~1.2.3 实际允许安装到哪些版本? 本文先给出可直接复述的结论,再用最小代码说明npm semver caret tilde 版本范围的工作方式、判断依据、项目边界和常见误区。
package.json 的 imports 字段(# 前缀说明符)与 exports 有何分工? 本文先给出可直接复述的结论,再用最小代码说明package.json imports 字段 # 子路径内部映射的工作方式、判断依据、项目边界和常见误区。
把包的 type 从 commonjs 改为 module 对下游用户有哪些破坏性影响? 本文先给出可直接复述的结论,再用最小代码说明package.json type module 变更 breaking change的工作方式、判断依据、项目边界和常见误区。
如何防范 typosquatting 与 dependency confusion 两类依赖混淆攻击? 本文先给出可直接复述的结论,再用最小代码说明依赖混淆 typosquatting 防范 scope 私服的工作方式、判断依据、项目边界和常见误区。
在 Node.js ESM 中直接 import .wasm 文件需要满足什么条件? 本文先给出可直接复述的结论,再用最小代码说明Node.js WebAssembly modules experimental-wasm-modules的工作方式、判断依据、项目边界和常见误区。