如何在TypeScript中正确使用Node.js的child_process模块?
在TypeScript中正确使用child_process的spawn方法
问题出在导入方式错误——你当前的写法是把整个child_process模块默认导入为spawn变量,但这个变量是整个模块对象,并非spawn函数本身,因此无法直接调用。
正确的两种导入方式:
1. 命名导入(推荐,与Node.js交互模式写法对齐)
采用ES模块的命名导入,和你在Node.js里的解构写法逻辑一致:
import { spawn } from "node:child_process"; // 正常调用spawn函数 spawn("ls", ["-lah"]);
2. 默认导入后调用模块属性
如果一定要用默认导入,需通过模块对象的spawn属性访问目标函数:
import childProcess from "node:child_process"; // 通过模块对象调用spawn childProcess.spawn("ls", ["-lah"]);
错误原因说明
node:child_process模块的默认导出是包含所有方法(spawn、exec等)的模块对象,而非单独的spawn函数。你之前的写法将整个模块对象赋值给spawn变量,自然无法像函数一样直接调用,因此TypeScript提示“没有调用签名”。
内容的提问来源于stack exchange,提问作者antimatter
相关产品推荐
相关产品推荐

