TypeScript项目中ts-node运行.ts文件报错:如何解决文件扩展名不被识别和import语句错误?

TypeScript项目中ts-node运行.ts文件报错:如何解决文件扩展名不被识别和import语句错误?

typescript项目中使用ts-node运行.ts文件时遇到的问题及解决方案

本文分析在使用ts-node运行包含类定义和继承的TypeScript文件时,遇到的TypeError: Unknown file extension “.ts” 和 SyntaxError: Cannot use import statement outside a module错误,并提供解决方案。

首先,TypeError: Unknown file extension “.ts” 表明ts-node无法识别.ts文件,这与Node.JS的模块系统配置相关。SyntaxError: Cannot use import statement outside a module则说明在CommonJS环境下使用了ES模块语法(import语句)。

问题根源在于package.json中的”type”: “module”配置。该配置声明项目使用ES模块系统,而ts-node在处理ES模块时可能存在兼容性问题。 删除”type”: “module”后,ts-node尝试使用CommonJS方式解析,但CommonJS不支持import语句,因此仍然报错。

解决方案:协调ES模块和CommonJS模块的兼容性。

  1. 修改tsconfig.json: 添加”esModuleInterop”: true。 这允许TypeScript编译器处理ES模块和CommonJS模块之间的互操作性。

  2. 使用ts-node-esm: 在ES模块环境下使用ts-node-esm test/testPerson.ts 命令运行测试文件,确保ts-node以正确的模块解析方式执行代码。

因此,通过在tsconfig.json中设置”esModuleInterop”: true,并使用ts-node-esm命令,可以解决import语句错误和文件扩展名识别问题。 至于package.json中的”type”: “module”,是否保留取决于项目是否需要兼容ES模块。 如果不需要,可以移除该配置,并确保代码与CommonJS兼容。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享