无法在WebStorm外部执行原本可在WebStorm中运行的TypeScript Node.js代码
我太懂你这种困扰了!你用WebStorm 2024.4.3.5搭了个Fastify+React+TypeScript的Node.js项目,在IDE里点运行按钮就能正常跑server.ts,可到终端里直接执行就不行了——这事儿真的闹心😅
先给你扒清楚问题根源:你看到WebStorm执行的命令里带了--import file:/snap/webstorm/451/plugins/nodeJS/js/ts-file-loader...这个参数,这是WebStorm私有的内置TypeScript加载器,它能让Node直接“读懂”TS/TSX文件,但这个加载器是IDE专属的,你的终端环境里根本没有这玩意儿,所以直接照搬IDE的命令或者用node server.ts肯定跑不起来。
针对你的技术栈(Node 23.11.0 via nvm),给你几个亲测好用的解决办法:
用tsx直接运行(最贴近WebStorm的体验)
WebStorm的内置加载器逻辑和tsx工具几乎一致,都是实时把TS代码转成Node能执行的JS,不需要提前编译。你可以直接用npx临时调用,不用全局安装:npx tsx server.ts如果经常用的话,全局安装更方便:
npm install -g tsx tsx server.ts这个方式完全适配你的Node版本和技术栈,跑起来和IDE里一样顺畅。
先编译TS为JS再运行
如果你项目里有tsconfig.json配置,也可以用TypeScript官方的编译器tsc先编译代码,再执行JS文件:# 先全量编译(根据tsconfig的outDir输出到对应目录,比如dist) tsc # 运行编译后的文件 node dist/server.js # 要是只跑单个文件的话,也可以这样 tsc server.ts && node server.js确认终端的Node版本和WebStorm一致
别忘了检查终端里用的Node版本是不是和WebStorm一样!你WebStorm用的是nvm管理的23.11.0,终端里可以跑nvm use 23.11.0切换到相同版本,避免因为版本差异导致的奇怪问题。
备注:内容来源于stack exchange,提问作者Dr. Polar Humenn

