You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中结合child_process.spawn()使用ts-node?

解决Windows下child_process.spawn调用ts-node出现ENOENT错误的方案

核心原因

ENOENT错误说明系统找不到ts-node的可执行文件。你添加到PATH的是全局node_modules文件夹,但npm全局安装的包的可执行脚本(比如ts-node.cmd)其实在npm全局bin目录,不是node_modules本身。

具体解决步骤

1. 先修正代码语法错误

你的代码里spawn调用末尾多了个逗号,先改对:

const { spawn } = require('child_process');
const convert = spawn('ts-node', ['./../external_libraries/lv_img_conv-master/lib/cli.ts']);
convert.on("close", code => console.log(`child process exited with code ${code}`));

2. 确认ts-node的实际可执行路径

打开命令提示符(CMD),运行:

npm list -g ts-node

输出里会显示ts-node的安装位置,通常对应的bin目录是C:\Users\<你的用户名>\AppData\Roaming\npm(比如C:\Users\张三\AppData\Roaming\npm),这个目录下有ts-node.cmd文件。

3. 修正系统PATH环境变量

  • 打开Windows设置 → 系统 → 关于 → 高级系统设置 → 环境变量
  • 在系统变量的Path里添加刚才找到的npm全局bin目录(比如C:\Users\张三\AppData\Roaming\npm)
  • 重启所有打开的终端和Node.js进程,让PATH生效

4. 备选方案:直接指定ts-node的完整路径

如果不想改PATH,或者改了还是不行,直接在spawn里写ts-node.cmd的完整路径:

const convert = spawn('C:\\Users\\张三\\AppData\\Roaming\\npm\\ts-node.cmd', ['./../external_libraries/lv_img_conv-master/lib/cli.ts']);

注意路径里的反斜杠要写两个,或者用正斜杠替代:'C:/Users/张三/AppData/Roaming/npm/ts-node.cmd'

5. 备选方案:用npm exec/npx调用

借助npm的exec命令或npx,自动处理全局包路径问题:

// 用npm exec
const convert = spawn('npm', ['exec', '--', 'ts-node', './../external_libraries/lv_img_conv-master/lib/cli.ts']);

// 或者用npx
const convert = spawn('npx', ['ts-node', './../external_libraries/lv_img_conv-master/lib/cli.ts']);

内容的提问来源于stack exchange,提问作者coder101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:24:52