TypeScript编译报错:Module 'node:tls'无默认导出的解决方法
问题
基于TypeScript的Node.js项目集成cloud-sql-connector时,编译出现以下错误:
node_modules/@google-cloud/cloud-sql-connector/dist/cjs/connector.d.ts:2:8 - error TS1192: Module '"node:tls"' has no default export. 2 import tls from 'node:tls';
当前tsconfig.json配置:
{ "compilerOptions": { "noImplicitReturns": true, "noUnusedLocals": true, "strict": true, "allowJs": true, "module": "CommonJS", "moduleResolution": "node", "sourceMap": true, "target": "es2020" }, "compileOnSave": true, "include": [ "./src/**/*.ts" ] }
手动修改node_modules中对应文件的导入方式可解决,但希望无需修改依赖文件实现修复。
解决方案
启用ES模块互操作选项
在tsconfig.json的compilerOptions中添加以下两个配置:"compilerOptions": { // 保留原有配置 "esModuleInterop": true, "allowSyntheticDefaultImports": true }这两个选项会让TypeScript允许对CommonJS模块使用默认导入语法,适配cloud-sql-connector的写法。
添加类型声明补丁
在项目src目录下创建类型声明文件(比如src/types/node-tls.d.ts),写入以下内容:declare module 'node:tls' { import * as tls from 'node:tls'; export = tls; export default tls; }该文件会覆盖TypeScript对
node:tls模块的类型识别,添加默认导出的定义,从而解决编译错误。升级cloud-sql-connector版本
该错误可能是依赖包的版本bug,尝试升级到最新版本:npm update @google-cloud/cloud-sql-connector # 或使用yarn yarn upgrade @google-cloud/cloud-sql-connector官方可能在新版本中修复了这个导入语法问题。
内容的提问来源于stack exchange,提问作者Manabu Tokunaga
相关产品推荐
相关产品推荐

