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 分享