编译器配置项-compilerOptions
模块相关(三)
模块解决方案 - moduleResolution
默认值:如果Classic
if module
选项为 AMD
、UMD
、System
或者 ES6
/ES2015
,默认值为classic
;如果module
选项为 node16
或者nodenext
,默认值为node16
或者nodenext
;其他情况,默认值为node
。
可以指定的模块解决方案的值为:
-
'node16'
或者'nodenext'
:适用于现代版本的Node.js
。Node.js
从v12
开始,之后的版本模块导入支持两种不同的算法,即ECMAScript imports
和 CommonJSrequire
。当moduleResolution
选项值和module
选项值结合使用时,会根据代码中实际使用的import
或require
选择正确的算法进行解析模块导入。 -
'node10'
(之前的值为'node'
):适用于Node.js
的v10
之前的版本,仅支持CommonJS的require
算法( 在现代代码开发中,你可能不需要设置为node10
)。 -
'bundler'
:适用于使用打包器。就像node16
和nodenext
,支持package.json
中的"imports"
和"exports"
,不像Node.js
解决模式,bundler
在导入相对路径的文件时不需要文件扩展名。 -
'classic'
适用于TypeScript 1.6
之前的版本,现在不应该使用了。
有一些参考页解释了TypeScript 模块解析背后的理论 以及每个选项的详细信息。