当前位置: 首页> 教育> 培训 > ts-node报错ERR_UNKNOWN_FILE_EXTENSION

ts-node报错ERR_UNKNOWN_FILE_EXTENSION

时间:2025/7/30 17:24:49来源:https://blog.csdn.net/Vivien_CC/article/details/140957484 浏览次数:0次

问题

  有个monorepo项目,在最外层一次性打包 3 个项目的脚本已经成功实现,如下:

"build:test": "cross-env NODE_ENV=test vite build --mode test && esno ./build/script/postBuild.ts",
"build:prod": "cross-env NODE_ENV=production vite build --mode production && esno ./build/script/postBuild.ts",

        为了防止提交错误,我想新增一个自动上传的脚本,但是~遇到了一个非常棘手的问题,我写了一个 deploy 脚本,希望实现半自动化实现 Vue 项目的上传ftp,在 script 中进行配置:

"deploy:test": "cross-env NODE_ENV=test ts-node ./deploy/index.ts",
"deploy:prod": "cross-env NODE_ENV=production ts-node ./deploy/index.ts",

         结果报错:

e6649c84297f45fd882b8108cc97849a.png

解决   

     在网上寻找了很多很多很多种解决方案,最终发现, 只要在 package.json 文件中将 【"type": "module"】删除,问题就解决了。

新的问题

        但是呢,新的问题出现了,项目跑不动了呀!【"type": "module" 】删除后,项目它就跑不动了!!!

a6d847ed178f4daf9c5cccc2b3769117.png

矛盾点

        这是非常矛盾的地方:

1、如果我把 package.json 中的 "type": "module" 删掉,那么就跑不动,也 build 不了,但是能 deploy 成功。

2、如果不删掉  "type": "module" ,那么就可以跑也可以 build,但是却无法 deploy。

最终解决方案

 package.json 中的 "type": "module", 依然保留,然后进行以下操作进行解决

① 修改 tsconfig.json

        在 tsconfig.json 文件中添加以下代码:

  "ts-node": {"transpileOnly": true,"files": true,"esm": true},"compilerOptions": {//配置编译选项"target": "ESNext","module": "ESNext","useDefineForClassFields": true,"moduleResolution": "node",// ......其他配置}

②修改 package.json

        在 package.json 中添加以下代码:

"deploy:test": "cross-env NODE_ENV=test node --loader ts-node/esm ./deploy/index.ts",
"deploy:prod": "cross-env NODE_ENV=production node --loader ts-node/esm ./deploy/index.ts",

这样就解决了问题!

需要的依赖

  "dependencies": {"@types/lodash": "^4.17.0","ftp-deploy": "^2.4.7","inquirer": "^10.1.5","lodash-es": "^4.17.21"},
  "devDependencies": {"@types/node": "^20.11.19","ts-node": "^10.9.2","typescript": "^5.4.5","husky": "^8.0.0","cross-env": "^7.0.3",}
关键字:ts-node报错ERR_UNKNOWN_FILE_EXTENSION

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: